Developers
Threads by month
- ----- 2024 -----
- 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
August 2016
- 11 participants
- 28 discussions
[chirp_devel] [PATCH] Support pySerial 3+. Fixes #3167 #3209 #3521 #3671 #3703
by Tom Hayward 03 Feb '18
by Tom Hayward 03 Feb '18
03 Feb '18
# HG changeset patch
# User Tom Hayward <tom(a)tomh.us>
# Date 1465361362 25200
# Tue Jun 07 21:49:22 2016 -0700
# Node ID d1bc2c9177858ff87c86e08447513f53794c2868
# Parent 333a280ca0c4e856258ebf9dfdb7c547fa9ec90c
Support pySerial 3+. Fixes #3167 #3209 #3521 #3671 #3703
diff -r 333a280ca0c4 -r d1bc2c917785 chirp/detect.py
--- a/chirp/detect.py Wed Jun 01 17:30:31 2016 -0700
+++ b/chirp/detect.py Tue Jun 07 21:49:22 2016 -0700
@@ -39,7 +39,7 @@
# ICOM VHF/UHF Clone-type radios @ 9600 baud
try:
- ser.setBaudrate(9600)
+ ser.baudrate = 9600
md = icf.get_model_data(ser)
return _icom_model_data_to_rclass(md)
except errors.RadioError, e:
@@ -47,7 +47,7 @@
# ICOM IC-91/92 Live-mode radios @ 4800/38400 baud
- ser.setBaudrate(4800)
+ ser.baudrate = 4800
try:
ic9x_ll.send_magic(ser)
return _icom_model_data_to_rclass("ic9x")
@@ -58,7 +58,7 @@
for rate in [9600, 4800, 19200]:
try:
- ser.setBaudrate(rate)
+ ser.baudrate = rate
return icomciv.probe_model(ser)
except errors.RadioError:
pass
diff -r 333a280ca0c4 -r d1bc2c917785 chirp/drivers/btech.py
--- a/chirp/drivers/btech.py Wed Jun 01 17:30:31 2016 -0700
+++ b/chirp/drivers/btech.py Tue Jun 07 21:49:22 2016 -0700
@@ -332,7 +332,7 @@
# touching the serial timeout to optimize the flushing
# restored at the end to the default value
- radio.pipe.setTimeout(0.1)
+ radio.pipe.timeout = 0.1
dump = "1"
datacount = 0
@@ -347,7 +347,7 @@
raise errors.RadioError(seriale)
# restore the default serial timeout
- radio.pipe.setTimeout(STIMEOUT)
+ radio.pipe.timeout = STIMEOUT
except Exception:
raise errors.RadioError("Unknown error cleaning the serial buffer")
@@ -477,8 +477,8 @@
def _do_ident(radio, status, upload=False):
"""Put the radio in PROGRAM mode & identify it"""
# set the serial discipline
- radio.pipe.setBaudrate(9600)
- radio.pipe.setParity("N")
+ radio.pipe.baudrate = 9600
+ radio.pipe.parity = "N"
# open the radio into program mode
if _start_clone_mode(radio, status) is False:
@@ -516,7 +516,7 @@
# has the check value in the _id2 var, others simply False
if radio._id2 is not False:
# lower the timeout here as this radios are reseting due to timeout
- radio.pipe.setTimeout(0.05)
+ radio.pipe.timeout = 0.05
# query & receive the extra ID
_send(radio, _make_frame("S", 0x3DF0, 16))
@@ -561,7 +561,7 @@
raise errors.RadioError("Radio didn't ACK the upload")
# restore the default serial timeout
- radio.pipe.setTimeout(STIMEOUT)
+ radio.pipe.timeout = STIMEOUT
# DEBUG
LOG.info("Positive ident, this is a %s %s" % (radio.VENDOR, radio.MODEL))
diff -r 333a280ca0c4 -r d1bc2c917785 chirp/drivers/ft2800.py
--- a/chirp/drivers/ft2800.py Wed Jun 01 17:30:31 2016 -0700
+++ b/chirp/drivers/ft2800.py Tue Jun 07 21:49:22 2016 -0700
@@ -195,7 +195,7 @@
return rf
def sync_in(self):
- self.pipe.setParity("E")
+ self.pipe.parity = "E"
start = time.time()
try:
self._mmap = _download(self)
@@ -208,7 +208,7 @@
def sync_out(self):
self.pipe.timeout = 1
- self.pipe.setParity("E")
+ self.pipe.parity = "E"
start = time.time()
try:
_upload(self)
diff -r 333a280ca0c4 -r d1bc2c917785 chirp/drivers/ic9x_ll.py
--- a/chirp/drivers/ic9x_ll.py Wed Jun 01 17:30:31 2016 -0700
+++ b/chirp/drivers/ic9x_ll.py Tue Jun 07 21:49:22 2016 -0700
@@ -439,31 +439,31 @@
def send_magic(pipe):
"""Send the magic incantation to wake up an ic9x radio"""
- if pipe.getBaudrate() == 38400:
+ if pipe.baudrate == 38400:
resp = _send_magic_38400(pipe)
if resp:
return
LOG.info("Switching from 38400 to 4800")
- pipe.setBaudrate(4800)
+ pipe.baudrate = 4800
resp = _send_magic_4800(pipe)
- pipe.setBaudrate(38400)
+ pipe.baudrate = 38400
if resp:
return
raise errors.RadioError("Radio not responding")
- elif pipe.getBaudrate() == 4800:
+ elif pipe.baudrate == 4800:
resp = _send_magic_4800(pipe)
if resp:
return
LOG.info("Switching from 4800 to 38400")
- pipe.setBaudrate(38400)
+ pipe.baudrate = 38400
resp = _send_magic_38400(pipe)
if resp:
return
- pipe.setBaudrate(4800)
+ pipe.baudrate = 4800
raise errors.RadioError("Radio not responding")
else:
raise errors.InvalidDataError("Radio in unknown state (%i)" %
- pipe.getBaudrate())
+ pipe.baudrate)
def get_memory_frame(pipe, vfo, number):
diff -r 333a280ca0c4 -r d1bc2c917785 chirp/drivers/icf.py
--- a/chirp/drivers/icf.py Wed Jun 01 17:30:31 2016 -0700
+++ b/chirp/drivers/icf.py Tue Jun 07 21:49:22 2016 -0700
@@ -251,7 +251,7 @@
LOG.debug("Response:\n%s" % util.hexprint(resp))
LOG.info("Switching to 38400 baud")
- radio.pipe.setBaudrate(38400)
+ radio.pipe.baudrate = 38400
buf = ("\xFE" * 14) + \
"\xEE\xEF" + \
diff -r 333a280ca0c4 -r d1bc2c917785 chirp/drivers/kenwood_live.py
--- a/chirp/drivers/kenwood_live.py Wed Jun 01 17:30:31 2016 -0700
+++ b/chirp/drivers/kenwood_live.py Tue Jun 07 21:49:22 2016 -0700
@@ -103,7 +103,7 @@
LAST_DELIMITER = delimiter
LOG.info("Trying ID at baud %i with delimiter \"%s\"" %
(i, repr(delimiter)))
- ser.setBaudrate(i)
+ ser.baudrate = i
ser.write(LAST_DELIMITER[0])
ser.read(25)
resp = command(ser, "ID")
diff -r 333a280ca0c4 -r d1bc2c917785 chirp/drivers/thd72.py
--- a/chirp/drivers/thd72.py Wed Jun 01 17:30:31 2016 -0700
+++ b/chirp/drivers/thd72.py Tue Jun 07 21:49:22 2016 -0700
@@ -231,7 +231,7 @@
def _detect_baud(self):
for baud in [9600, 19200, 38400, 57600]:
- self.pipe.setBaudrate(baud)
+ self.pipe.baudrate = baud
try:
self.pipe.write("\r\r")
except:
@@ -422,9 +422,11 @@
raise errors.RadioError("No response from self")
allblocks = range(self._memsize/256)
- self.pipe.setBaudrate(57600)
- self.pipe.getCTS()
- self.pipe.setRTS()
+ self.pipe.baudrate = 57600
+ try:
+ self.pipe.setRTS()
+ except AttributeError:
+ self.pipe.rts = True
self.pipe.read(1)
data = ""
LOG.debug("reading blocks %d..%d" % (blocks[0], blocks[-1]))
@@ -458,9 +460,11 @@
if self.command("0M PROGRAM") != "0M":
raise errors.RadioError("No response from self")
- self.pipe.setBaudrate(57600)
- self.pipe.getCTS()
- self.pipe.setRTS()
+ self.pipe.baudrate = 57600
+ try:
+ self.pipe.setRTS()
+ except AttributeError:
+ self.pipe.rts = True
self.pipe.read(1)
LOG.debug("writing blocks %d..%d" % (blocks[0], blocks[-1]))
total = len(blocks)
diff -r 333a280ca0c4 -r d1bc2c917785 chirp/drivers/tk270.py
--- a/chirp/drivers/tk270.py Wed Jun 01 17:30:31 2016 -0700
+++ b/chirp/drivers/tk270.py Tue Jun 07 21:49:22 2016 -0700
@@ -194,10 +194,9 @@
"""Open the radio into program mode and check if it's the correct model"""
# Set serial discipline
try:
- radio.pipe.setParity("N")
- radio.pipe.setTimeout(TIMEOUT)
- radio.pipe.flushOutput()
- radio.pipe.flushInput()
+ radio.pipe.parity = "N"
+ radio.pipe.timeout = TIMEOUT
+ radio.pipe.flush()
except:
msg = "Serial error: Can't set serial line discipline"
raise errors.RadioError(msg)
diff -r 333a280ca0c4 -r d1bc2c917785 chirp/drivers/tk760.py
--- a/chirp/drivers/tk760.py Wed Jun 01 17:30:31 2016 -0700
+++ b/chirp/drivers/tk760.py Tue Jun 07 21:49:22 2016 -0700
@@ -188,10 +188,9 @@
"""Open the radio into program mode and check if it's the correct model"""
# Set serial discipline
try:
- radio.pipe.setParity("N")
- radio.pipe.setTimeout(TIMEOUT)
- radio.pipe.flushOutput()
- radio.pipe.flushInput()
+ radio.pipe.parity = "N"
+ radio.pipe.timeout = TIMEOUT
+ radio.pipe.flush()
LOG.debug("Serial port open successful")
except:
msg = "Serial error: Can't set serial line discipline"
diff -r 333a280ca0c4 -r d1bc2c917785 chirp/drivers/tk760g.py
--- a/chirp/drivers/tk760g.py Wed Jun 01 17:30:31 2016 -0700
+++ b/chirp/drivers/tk760g.py Tue Jun 07 21:49:22 2016 -0700
@@ -441,8 +441,8 @@
def _open_radio(radio, status):
"""Open the radio into program mode and check if it's the correct model"""
# linux min is 0.13, win min is 0.25; set to bigger to be safe
- radio.pipe.setTimeout(0.25)
- radio.pipe.setParity("E")
+ radio.pipe.timeout = 0.25
+ radio.pipe.parity = "E"
# DEBUG
LOG.debug("Entering program mode.")
@@ -525,17 +525,17 @@
# set the timeout and if windows keep it bigger
if sys.platform in ["win32", "cygwin"]:
# bigger timeout
- radio.pipe.setTimeout(0.55)
+ radio.pipe.timeout = 0.55
else:
# Linux can keep up, MAC?
- radio.pipe.setTimeout(0.05)
+ radio.pipe.timeout = 0.05
# DEBUG
LOG.debug("Starting the download from radio")
for addr in MEM_BLOCKS:
# send request, but before flush the rx buffer
- radio.pipe.flushInput()
+ radio.pipe.flush()
_send(radio, _make_frame("R", addr))
# now we get the data
@@ -574,7 +574,7 @@
radio.status_fn(status)
# the default for the original soft as measured
- radio.pipe.setTimeout(0.5)
+ radio.pipe.timeout = 0.5
# DEBUG
LOG.debug("Starting the upload to the radio")
diff -r 333a280ca0c4 -r d1bc2c917785 chirp/drivers/tk8102.py
--- a/chirp/drivers/tk8102.py Wed Jun 01 17:30:31 2016 -0700
+++ b/chirp/drivers/tk8102.py Tue Jun 07 21:49:22 2016 -0700
@@ -99,7 +99,7 @@
def do_download(radio):
- radio.pipe.setParity("E")
+ radio.pipe.parity = "E"
radio.pipe.timeout = 1
do_ident(radio)
@@ -129,7 +129,7 @@
def do_upload(radio):
- radio.pipe.setParity("E")
+ radio.pipe.parity = "E"
radio.pipe.timeout = 1
do_ident(radio)
diff -r 333a280ca0c4 -r d1bc2c917785 chirp/drivers/tmv71.py
--- a/chirp/drivers/tmv71.py Wed Jun 01 17:30:31 2016 -0700
+++ b/chirp/drivers/tmv71.py Tue Jun 07 21:49:22 2016 -0700
@@ -36,7 +36,7 @@
def _detect_baud(self):
for baud in [9600, 19200, 38400, 57600]:
- self.pipe.setBaudrate(baud)
+ self.pipe.baudrate = baud
self.pipe.write("\r\r")
self.pipe.read(32)
try:
2
4
[chirp_devel] [PATCH] [leixen] Support non-standard tones on VV898 radio memories
by Brian Dickman 31 Aug '16
by Brian Dickman 31 Aug '16
31 Aug '16
# HG changeset patch
# User Brian Dickman <brian.maybe(a)gmail.com>
# Date 1472622871 25200
# Tue Aug 30 22:54:31 2016 -0700
# Node ID 2e7f65569ba66c5ca8d9d3733ae8067e3948361a
# Parent bf777f74e27695ef2f54e7852dda88fb14bbfa2d
[leixen] Support non-standard tones on VV898 radio memories. Fixes #3899.
This issue used to cause some download corruption when a radio memory had
one of the non-standard tones (as the factory image did). Note that there
is no RadioFeatures "valid tones" map, so these extra tones can not
currently be selected during new memory creation.
diff -r bf777f74e276 -r 2e7f65569ba6 chirp/drivers/leixen.py
--- a/chirp/drivers/leixen.py Mon Aug 29 10:29:40 2016 -0700
+++ b/chirp/drivers/leixen.py Tue Aug 30 22:54:31 2016 -0700
@@ -356,6 +356,15 @@
ack = radio.pipe.read(8)
+class LeixenMemory(chirp_common.Memory):
+ '''Leixen memory which supports non-standard tones and codes'''
+ def __init__(self):
+ chirp_common.Memory.__init__(self)
+
+ self._valid_map["rtone"] = TONES
+ self._valid_map["ctone"] = TONES
+
+
# Declaring Aliases
class LT898UV(chirp_common.Alias):
VENDOR = "LUITON"
@@ -466,7 +475,7 @@
_mem = self._memobj.memory[number - 1]
_name = self._memobj.name[number - 1]
- mem = chirp_common.Memory()
+ mem = LeixenMemory()
mem.number = number
if _mem.get_raw()[:4] == "\xFF\xFF\xFF\xFF":
2
2
Tested changes:
[Dave Allan <danplanet(a)dpallan.com>] Remove spurious newline causing stock config import error. Fixes #3743
[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 3e366aeabfb583ef55ba5830e49cc8be9e5bfa23
[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 3e366aeabfb583ef55ba5830e49cc8be9e5bfa23
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson7162539669525204480.sh
[workspace] $ /bin/sh -xe /tmp/hudson3021593501803017982.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.050s
OK
Patch 'tip' is OK
Checking for PEP8 regressions...
./chirp/drivers/ft2900.py:1236:1: E265 block comment should start with '# '
./chirp/drivers/ft60.py:521:45: W291 trailing whitespace
./chirp/drivers/ft60.py:522:25: E128 continuation line under-indented for visual indent
./chirp/drivers/ft60.py:523:13: E301 expected 1 blank line, found 0
./chirp/drivers/ft817.py:587:41: E128 continuation line under-indented for visual indent
./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/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/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.600s
user 0m7.488s
sys 0m0.064s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-08-29 10:32:52,575] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 16.04.1 LTS (Python 2.7.12)
[2016-08-29 10:32:52,612] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-08-29 10:32:52,612] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-08-29 10:32:52,612] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-08-29 10:32:52,612] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-08-29 10:32:52,612] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-08-29 10:32:52,612] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-08-29 10:32:52,613] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-08-29 10:32:52,613] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-08-29 10:32:52,613] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-08-29 10:32:52,613] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-08-29 10:32:52,613] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-08-29 10:32:52,613] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-08-29 10:32:52,613] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-08-29 10:32:52,613] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-08-29 10:32:52,613] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-08-29 10:32:52,613] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-08-29 10:32:52,614] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-08-29 10:32:52,614] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-08-29 10:32:52,614] chirp.directory - INFO: Registered Icom_IC-7100 = Icom7100Radio
[2016-08-29 10:32:52,614] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-08-29 10:32:52,614] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-08-29 10:32:52,615] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-08-29 10:32:52,615] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-08-29 10:32:52,615] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-08-29 10:32:52,615] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-08-29 10:32:52,615] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-08-29 10:32:52,615] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-08-29 10:32:52,615] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-08-29 10:32:52,615] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-08-29 10:32:52,615] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-08-29 10:32:52,615] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-08-29 10:32:52,616] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-08-29 10:32:52,616] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-08-29 10:32:52,616] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-08-29 10:32:52,617] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-08-29 10:32:52,617] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-08-29 10:32:52,618] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-08-29 10:32:52,618] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-08-29 10:32:52,618] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-08-29 10:32:52,618] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-08-29 10:32:52,618] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-08-29 10:32:52,618] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-08-29 10:32:52,618] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-08-29 10:32:52,618] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-08-29 10:32:52,619] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-08-29 10:32:52,619] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-08-29 10:32:52,619] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-08-29 10:32:52,619] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-08-29 10:32:52,619] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-08-29 10:32:52,619] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-08-29 10:32:52,619] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-08-29 10:32:52,619] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-08-29 10:32:52,620] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-08-29 10:32:52,620] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-08-29 10:32:52,620] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-08-29 10:32:52,620] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-08-29 10:32:52,620] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-08-29 10:32:52,620] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-08-29 10:32:52,620] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-08-29 10:32:52,620] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-08-29 10:32:52,621] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-08-29 10:32:52,622] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-08-29 10:32:52,622] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-08-29 10:32:52,622] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-08-29 10:32:52,622] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-08-29 10:32:52,623] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-08-29 10:32:52,623] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-08-29 10:32:52,623] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-08-29 10:32:52,624] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-08-29 10:32:52,624] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-08-29 10:32:52,624] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-08-29 10:32:52,624] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-08-29 10:32:52,624] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-08-29 10:32:52,625] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-08-29 10:32:52,625] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-08-29 10:32:52,625] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-08-29 10:32:52,625] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-08-29 10:32:52,626] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-08-29 10:32:52,626] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-08-29 10:32:52,626] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-08-29 10:32:52,626] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-08-29 10:32:52,646] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-08-29 10:32:52,649] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-08-29 10:32:52,649] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-08-29 10:32:52,649] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-08-29 10:32:52,649] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-08-29 10:32:52,650] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-08-29 10:32:52,650] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-08-29 10:32:52,650] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-08-29 10:32:52,650] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-08-29 10:32:52,651] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-08-29 10:32:52,651] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-08-29 10:32:52,651] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-08-29 10:32:52,651] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-08-29 10:32:52,652] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-08-29 10:32:52,652] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-08-29 10:32:52,652] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-08-29 10:32:52,652] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-08-29 10:32:52,652] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-08-29 10:32:52,653] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-08-29 10:32:52,653] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-08-29 10:32:52,653] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-08-29 10:32:52,653] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-08-29 10:32:52,653] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-08-29 10:32:52,654] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-08-29 10:32:52,654] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-08-29 10:32:52,654] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-08-29 10:32:52,655] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-08-29 10:32:52,655] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-08-29 10:32:52,655] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-08-29 10:32:52,656] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-08-29 10:32:52,656] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-08-29 10:32:52,656] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-08-29 10:32:52,656] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-08-29 10:32:52,656] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-08-29 10:32:52,656] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-08-29 10:32:52,656] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-08-29 10:32:52,657] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-08-29 10:32:52,657] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-08-29 10:32:52,657] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-08-29 10:32:52,657] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-08-29 10:32:52,658] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-08-29 10:32:52,658] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-08-29 10:32:52,658] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-08-29 10:32:52,658] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-08-29 10:32:52,659] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-08-29 10:32:52,659] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-08-29 10:32:52,659] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-08-29 10:32:52,660] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-08-29 10:32:52,660] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-08-29 10:32:52,660] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-08-29 10:32:52,660] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-08-29 10:32:52,660] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-08-29 10:32:52,660] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-08-29 10:32:52,660] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-08-29 10:32:52,660] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-08-29 10:32:52,661] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-08-29 10:32:52,661] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-08-29 10:32:52,661] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-08-29 10:32:52,661] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-08-29 10:32:52,661] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-08-29 10:32:52,661] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-08-29 10:32:52,662] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-08-29 10:32:52,662] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-08-29 10:32:52,662] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-08-29 10:32:52,662] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-08-29 10:32:52,662] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-08-29 10:32:52,662] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-08-29 10:32:52,662] chirp.directory - INFO: Registered Kenwood_TK-388G = TK388G_Radios
[2016-08-29 10:32:52,662] chirp.directory - INFO: Registered Kenwood_TK-378G = TK378G_Radios
[2016-08-29 10:32:52,662] chirp.directory - INFO: Registered Kenwood_TK-372G = TK372G_Radios
[2016-08-29 10:32:52,662] chirp.directory - INFO: Registered Kenwood_TK-370G = TK370G_Radios
[2016-08-29 10:32:52,662] chirp.directory - INFO: Registered Kenwood_TK-360G = TK360G_Radios
[2016-08-29 10:32:52,662] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-08-29 10:32:52,663] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-08-29 10:32:52,663] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-08-29 10:32:52,663] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-08-29 10:32:52,663] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-08-29 10:32:52,663] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-08-29 10:32:52,663] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-08-29 10:32:52,663] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-08-29 10:32:52,664] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-08-29 10:32:52,664] chirp.directory - INFO: Registered BTECH_UV-5X3 = UV5X3
[2016-08-29 10:32:52,664] chirp.directory - INFO: Registered Baofeng_UV-6R = UV6R
[2016-08-29 10:32:52,665] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-08-29 10:32:52,665] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2016-08-29 10:32:52,665] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-08-29 10:32:52,666] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-08-29 10:32:52,666] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-08-29 10:32:52,666] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-08-29 10:32:52,667] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-08-29 10:32:52,667] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-08-29 10:32:52,667] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-08-29 10:32:52,668] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-08-29 10:32:52,668] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-08-29 10:32:52,668] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
+ rm /tmp/Alinco_DJ175_Nd_5Bo.img /tmp/Alinco_DJ596_04vTz1.img /tmp/Alinco_DR235T_qgco9s.img /tmp/AnyTone_OBLTR-8R_uGB4Zn.img /tmp/AnyTone_TERMN-8R_ZMWUo6.img /tmp/BTECH_UV-2501+220_BAq7sP.img /tmp/BTECH_UV-5001_3jF7z9.img /tmp/BTECH_UV-50X3_KvvQG3.img /tmp/BTECH_UV-50X3_kRM90U.img /tmp/BTECH_UV-50X3_xjQ99Z.img /tmp/BTECH_UV-5X3_umOnI0.img /tmp/Baofeng_BF-888_Aaglui.img /tmp/Baofeng_F-11_otLxQx.img /tmp/Baofeng_UV-3R_6oReKA.img /tmp/Baofeng_UV-5R_NtyyUp.img /tmp/Baofeng_UV-6R_gOVWN8.img /tmp/Baofeng_UV-B5_ftNF7y.img /tmp/Baojie_BJ-9900_SDMv5k.img /tmp/Baojie_BJ-9900_WQLotz.img /tmp/Baojie_BJ-9900_XEKroi.img /tmp/Feidaxin_FD-268A_YhMYz_.img /tmp/Feidaxin_FD-268B_21H6uc.img /tmp/Feidaxin_FD-288B_Rbn1N0.img /tmp/Icom_IC-208H_avB0eq.img /tmp/Icom_IC-2100H_cU6vac.img /tmp/Icom_IC-2200H_A_gKVQ.img /tmp/Icom_IC-2720H_IXuaIr.img /tmp/Icom_IC-2820H_iYp_P1.img /tmp/Icom_IC-Q7A_hmOyVz.img /tmp/Icom_IC-T70_56s1oy.img /tmp/Icom_IC-T7H_oWhuKD.img /tmp/Icom_IC-T8A_ROOWjt.img /tmp/Icom_IC-V82_U82_sbOSCU.img /tmp/Icom_IC-W32A_4UzmCt.img /tmp/Icom_IC-W32A_FiYIyJ.img /tmp/Icom_IC-W32A_Wje7V1.img /tmp/Icom_IC-W32E_bUrfHR.img /tmp/Icom_IC-W32E_iUEMUO.img /tmp/Icom_IC-W32E_zToeQ9.img /tmp/Icom_ID-31A_OcyO9h.img /tmp/Icom_ID-51 Plus_T74DAx.img /tmp/Icom_ID-51_RKndH0.img /tmp/Icom_ID-800H_BZ8zUc.img /tmp/Icom_ID-880H_zj4N_g.img /tmp/Jetstream_JT220M__FRkGJ.img /tmp/Jetstream_JT270M_PTctfc.img /tmp/KYD_IP-620_5JXamC.img /tmp/Kenwood_TH-D72 (clone mode)_ieOXkE.img /tmp/Kenwood_TK-272G_bjy3gU.img /tmp/Kenwood_TK-760G_wA15GO.img /tmp/Kenwood_TK-8102_WOy8px.img /tmp/Leixen_VV-898_qLp16I.img /tmp/Polmar_DB-50M_LvXCLt.img /tmp/Puxing_PX-2R_61YcVw.img /tmp/Puxing_PX-777_7S8YyM.img /tmp/TYT_TH-7800_o0juM3.img /tmp/TYT_TH-9800_26GkRV.img /tmp/TYT_TH-UV3R-25_y8SaWk.img /tmp/TYT_TH-UV3R_E4NxaG.img /tmp/TYT_TH-UVF1_Wi0W8x.img /tmp/TYT_TH9000_144_J0eoFu.img /tmp/Vertex Standard_VXA-700_VyYJ9g.img /tmp/WACCOM_MINI-8900_72NO9g.img /tmp/Wouxun_KG-816_W3L6Fu.img /tmp/Wouxun_KG-818_ySLxvU.img /tmp/Wouxun_KG-UV6_kuJ0ul.img /tmp/Wouxun_KG-UV8D_Xbc9_q.img /tmp/Wouxun_KG-UVD1P_Dy6WiE.img /tmp/Yaesu_FT-1802M_dq6g4G.img /tmp/Yaesu_FT-1D_QiIeWW.img /tmp/Yaesu_FT-2800M_paX3G7.img /tmp/Yaesu_FT-2900R_1900R_CSCkMV.img /tmp/Yaesu_FT-50_TNR4sW.img /tmp/Yaesu_FT-60_DhfYD6.img /tmp/Yaesu_FT-7800_7900_QtItim.img /tmp/Yaesu_FT-817ND (US)_f04zeU.img /tmp/Yaesu_FT-817ND_FG0001.img /tmp/Yaesu_FT-817_H89mUp.img /tmp/Yaesu_FT-857_897 (US)_1Qm74a.img /tmp/Yaesu_FT-857_897_umg3cX.img /tmp/Yaesu_FT-8800_Nm8RZ8.img /tmp/Yaesu_FT-8800_cGbqtA.img /tmp/Yaesu_FT-8800_ezCsux.img /tmp/Yaesu_FT-8900_i4FxEv.img /tmp/Yaesu_FTM-350_6VkwRd.img /tmp/Yaesu_FTM-350_6i7C1K.img /tmp/Yaesu_FTM-350_HQsmJ0.img /tmp/Yaesu_VX-2_XMnx2H.img /tmp/Yaesu_VX-3_TqVKWR.img /tmp/Yaesu_VX-5_i0bOO_.img /tmp/Yaesu_VX-6__BBR2U.img /tmp/Yaesu_VX-7_F9RWmj.img /tmp/Yaesu_VX-8_Ctpyvt.img
Email was triggered for: Success
Sending email for trigger: Success
1
0
29 Aug '16
Hey there --
I've spent just a little bit of time to update and complete a patch
uploaded earlier to #1003 <http://chirp.danplanet.com/issues/1003>. The
attached changeset adds support for the Icom IC-7100. Let me know if you
need any additional information or if this isn't the proper protocol for
submitting a patch.
Cheers,
Adam
2
1
Hi all,
The following trivial patch removes a spurious newline in the NOAA
Weather stations stock config. It fixes issue #3743 (Error when
importing NOAA stock config). Please review carefully, as this is my
first look into the CHIRP codebase.
Dave
2
2
Tested changes:
[Adam Coddington <me(a)adamcoddington.net>] [icomciv] Add support for IC-7100. Fixes #1003
This is largely just an updated version of Nick Partofthething's
(accounts(a)partofthething.com) original patch posted on 12 July 2015.
[Pavel Milanes (CO7WT) <pavelmc(a)gmail.com>] [PATCH][tk-760g.py] Add the Kenwood Serie 60G UHF HTs, fixes #3487
As per an user request, added the following HT for the Kenwood Series 60G:
TK-360G/370G/372G/378G/388G
The band limits are widened, please note the notice in the experimental popup text.
73 Pavel CO7WT
[Brian Dickman <brian.maybe(a)gmail.com>] [wouxun] Prevent KGUVD1PRadio driver from over-matching on leixen 898S
images (copy from same fix on KG816, in preparation for leixen 898S
driver and image), fixes #3947
The KGUVD1 match isn't very discriminate; basically any 8k image with
lots of 0xff toward the end could match. This copies the filter used
in the KG816 driver. Specifically the driver was matching to the 898S
test image that will be added shortly, and this fixes it, but other
users could run into the problem as well.
[Jim Unroe <rock.unroe(a)gmail.com>] [UV-6R] Adjust Channel Name Length
Most other Baofeng radios of this type support 7 character channel
names. It was reported that the UV-6R only supports 6 chararacter
channel names. This patch adjusts the name length to 6 characters.
related to #2761
[Jim Unroe <rock.unroe(a)gmail.com>] [UV-5X3] Fix Inverted Power Levels
Somehow I got the order of the power levels swapped. This patch puts
them in the proper order.
related to #3931
[Jim Unroe <rock.unroe(a)gmail.com>] [UV-6R] Fix Inverted Power Levels
Somehow I got the order of the power levels swapped. This patch puts
them in the proper order.
related to #2761
[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
5 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 e4704124d5b9d21db4b7cabcdff037a1b85f2bd8
[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 e4704124d5b9d21db4b7cabcdff037a1b85f2bd8
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson8179739467182784022.sh
[workspace] $ /bin/sh -xe /tmp/hudson8640599540119485408.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/drivers/ft2900.py:1236:1: E265 block comment should start with '# '
./chirp/drivers/ft60.py:521:45: W291 trailing whitespace
./chirp/drivers/ft60.py:522:25: E128 continuation line under-indented for visual indent
./chirp/drivers/ft60.py:523:13: E301 expected 1 blank line, found 0
./chirp/drivers/ft817.py:587:41: E128 continuation line under-indented for visual indent
./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/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/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.578s
user 0m7.468s
sys 0m0.036s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-08-29 07:12:56,899] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 16.04.1 LTS (Python 2.7.12)
[2016-08-29 07:12:56,937] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-08-29 07:12:56,937] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-08-29 07:12:56,937] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-08-29 07:12:56,937] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-08-29 07:12:56,937] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-08-29 07:12:56,937] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-08-29 07:12:56,937] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-08-29 07:12:56,937] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-08-29 07:12:56,937] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-08-29 07:12:56,938] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-08-29 07:12:56,938] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-08-29 07:12:56,938] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-08-29 07:12:56,938] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-08-29 07:12:56,938] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-08-29 07:12:56,938] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-08-29 07:12:56,938] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-08-29 07:12:56,938] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-08-29 07:12:56,938] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-08-29 07:12:56,938] chirp.directory - INFO: Registered Icom_IC-7100 = Icom7100Radio
[2016-08-29 07:12:56,939] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-08-29 07:12:56,939] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-08-29 07:12:56,939] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-08-29 07:12:56,939] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-08-29 07:12:56,939] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-08-29 07:12:56,940] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-08-29 07:12:56,940] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-08-29 07:12:56,940] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-08-29 07:12:56,940] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-08-29 07:12:56,940] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-08-29 07:12:56,940] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-08-29 07:12:56,940] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-08-29 07:12:56,940] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-08-29 07:12:56,941] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-08-29 07:12:56,941] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-08-29 07:12:56,942] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-08-29 07:12:56,942] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-08-29 07:12:56,943] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-08-29 07:12:56,943] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-08-29 07:12:56,943] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-08-29 07:12:56,943] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-08-29 07:12:56,943] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-08-29 07:12:56,943] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-08-29 07:12:56,943] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-08-29 07:12:56,943] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-08-29 07:12:56,944] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-08-29 07:12:56,944] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-08-29 07:12:56,944] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-08-29 07:12:56,944] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-08-29 07:12:56,944] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-08-29 07:12:56,944] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-08-29 07:12:56,944] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-08-29 07:12:56,944] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-08-29 07:12:56,945] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-08-29 07:12:56,945] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-08-29 07:12:56,945] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-08-29 07:12:56,945] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-08-29 07:12:56,945] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-08-29 07:12:56,945] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-08-29 07:12:56,945] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-08-29 07:12:56,945] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-08-29 07:12:56,946] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-08-29 07:12:56,947] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-08-29 07:12:56,947] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-08-29 07:12:56,947] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-08-29 07:12:56,947] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-08-29 07:12:56,948] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-08-29 07:12:56,948] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-08-29 07:12:56,948] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-08-29 07:12:56,948] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-08-29 07:12:56,949] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-08-29 07:12:56,949] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-08-29 07:12:56,949] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-08-29 07:12:56,949] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-08-29 07:12:56,950] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-08-29 07:12:56,950] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-08-29 07:12:56,950] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-08-29 07:12:56,950] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-08-29 07:12:56,951] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-08-29 07:12:56,951] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-08-29 07:12:56,951] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-08-29 07:12:56,951] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-08-29 07:12:56,959] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-08-29 07:12:56,962] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-08-29 07:12:56,962] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-08-29 07:12:56,963] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-08-29 07:12:56,963] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-08-29 07:12:56,963] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-08-29 07:12:56,963] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-08-29 07:12:56,963] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-08-29 07:12:56,964] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-08-29 07:12:56,964] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-08-29 07:12:56,964] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-08-29 07:12:56,965] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-08-29 07:12:56,965] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-08-29 07:12:56,965] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-08-29 07:12:56,965] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-08-29 07:12:56,965] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-08-29 07:12:56,966] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-08-29 07:12:56,966] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-08-29 07:12:56,966] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-08-29 07:12:56,966] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-08-29 07:12:56,966] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-08-29 07:12:56,966] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-08-29 07:12:56,967] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-08-29 07:12:56,967] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-08-29 07:12:56,967] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-08-29 07:12:56,968] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-08-29 07:12:56,968] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-08-29 07:12:56,968] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-08-29 07:12:56,968] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-08-29 07:12:56,969] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-08-29 07:12:56,969] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-08-29 07:12:56,969] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-08-29 07:12:56,969] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-08-29 07:12:56,969] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-08-29 07:12:56,969] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-08-29 07:12:56,970] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-08-29 07:12:56,970] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-08-29 07:12:56,970] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-08-29 07:12:56,970] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-08-29 07:12:56,970] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-08-29 07:12:56,972] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-08-29 07:12:56,972] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-08-29 07:12:56,972] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-08-29 07:12:56,972] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-08-29 07:12:56,972] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-08-29 07:12:56,973] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-08-29 07:12:56,973] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-08-29 07:12:56,973] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-08-29 07:12:56,973] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-08-29 07:12:56,973] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-08-29 07:12:56,974] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-08-29 07:12:56,974] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-08-29 07:12:56,974] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-08-29 07:12:56,974] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-08-29 07:12:56,974] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-08-29 07:12:56,974] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-08-29 07:12:56,974] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-08-29 07:12:56,974] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-08-29 07:12:56,974] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-08-29 07:12:56,975] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-08-29 07:12:56,975] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-08-29 07:12:56,975] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-08-29 07:12:56,975] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-08-29 07:12:56,975] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-08-29 07:12:56,975] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-08-29 07:12:56,975] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-08-29 07:12:56,976] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-08-29 07:12:56,976] chirp.directory - INFO: Registered Kenwood_TK-388G = TK388G_Radios
[2016-08-29 07:12:56,976] chirp.directory - INFO: Registered Kenwood_TK-378G = TK378G_Radios
[2016-08-29 07:12:56,976] chirp.directory - INFO: Registered Kenwood_TK-372G = TK372G_Radios
[2016-08-29 07:12:56,976] chirp.directory - INFO: Registered Kenwood_TK-370G = TK370G_Radios
[2016-08-29 07:12:56,976] chirp.directory - INFO: Registered Kenwood_TK-360G = TK360G_Radios
[2016-08-29 07:12:56,976] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-08-29 07:12:56,976] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-08-29 07:12:56,976] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-08-29 07:12:56,976] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-08-29 07:12:56,977] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-08-29 07:12:56,977] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-08-29 07:12:56,977] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-08-29 07:12:56,977] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-08-29 07:12:56,977] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-08-29 07:12:56,978] chirp.directory - INFO: Registered BTECH_UV-5X3 = UV5X3
[2016-08-29 07:12:56,978] chirp.directory - INFO: Registered Baofeng_UV-6R = UV6R
[2016-08-29 07:12:56,978] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-08-29 07:12:56,979] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2016-08-29 07:12:56,979] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-08-29 07:12:56,979] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-08-29 07:12:56,980] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-08-29 07:12:56,980] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-08-29 07:12:56,980] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-08-29 07:12:56,981] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-08-29 07:12:56,981] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-08-29 07:12:56,981] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-08-29 07:12:56,981] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-08-29 07:12:56,982] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
+ rm /tmp/Alinco_DJ175_P8rS4d.img /tmp/Alinco_DJ175_yBZwlc.img /tmp/Alinco_DJ596_FktVzH.img /tmp/Alinco_DJ596_O5Zc3t.img /tmp/Alinco_DR235T_CbweUT.img /tmp/Alinco_DR235T_d6VqJw.img /tmp/AnyTone_OBLTR-8R_sAxUia.img /tmp/AnyTone_OBLTR-8R_zkYeNT.img /tmp/AnyTone_TERMN-8R_KxT0Al.img /tmp/AnyTone_TERMN-8R_pVG1yI.img /tmp/BTECH_UV-2501+220_U0Wxzq.img /tmp/BTECH_UV-2501+220_kSMBWs.img /tmp/BTECH_UV-5001_kdpaXt.img /tmp/BTECH_UV-5001_rQDd4b.img /tmp/BTECH_UV-50X3_4B9sX_.img /tmp/BTECH_UV-50X3_91ZzY1.img /tmp/BTECH_UV-50X3_97mmAg.img /tmp/BTECH_UV-50X3_GgnPiC.img /tmp/BTECH_UV-50X3_JoWBHf.img /tmp/BTECH_UV-50X3_x5VbN9.img /tmp/BTECH_UV-5X3_O39ToO.img /tmp/BTECH_UV-5X3_im1Y7P.img /tmp/Baofeng_BF-888_VB53Fx.img /tmp/Baofeng_BF-888_aE3NTT.img /tmp/Baofeng_F-11_1E48rg.img /tmp/Baofeng_F-11_ds6013.img /tmp/Baofeng_UV-3R_bS9t06.img /tmp/Baofeng_UV-3R_zi10K4.img /tmp/Baofeng_UV-5R_5nDw35.img /tmp/Baofeng_UV-5R_CILufY.img /tmp/Baofeng_UV-6R_Foh_R8.img /tmp/Baofeng_UV-6R_pXQZ1a.img /tmp/Baofeng_UV-B5_oytoCp.img /tmp/Baofeng_UV-B5_yQg1HK.img /tmp/Baojie_BJ-9900_4SdNoa.img /tmp/Baojie_BJ-9900_AtUAn0.img /tmp/Baojie_BJ-9900_Ruq92J.img /tmp/Baojie_BJ-9900_YzRJ2b.img /tmp/Baojie_BJ-9900_oRDXGL.img /tmp/Baojie_BJ-9900_qdCxmy.img /tmp/Feidaxin_FD-268A_4SBHTY.img /tmp/Feidaxin_FD-268A_niBaHL.img /tmp/Feidaxin_FD-268B_PXns2R.img /tmp/Feidaxin_FD-268B_bGvHgs.img /tmp/Feidaxin_FD-288B_55UY1y.img /tmp/Feidaxin_FD-288B_oEE44g.img /tmp/Icom_IC-208H_15fiXw.img /tmp/Icom_IC-208H_xIHdVh.img /tmp/Icom_IC-2100H_MKGkT1.img /tmp/Icom_IC-2100H_iOkJRI.img /tmp/Icom_IC-2200H_J_vzfF.img /tmp/Icom_IC-2200H_Y1BRTx.img /tmp/Icom_IC-2720H_JuXsai.img /tmp/Icom_IC-2720H_bWNinH.img /tmp/Icom_IC-2820H_4RD_Mb.img /tmp/Icom_IC-2820H_fgGjRi.img /tmp/Icom_IC-Q7A_V4eZP1.img /tmp/Icom_IC-Q7A_Yx2MTY.img /tmp/Icom_IC-T70_SzTeBB.img /tmp/Icom_IC-T70_uT1Wmv.img /tmp/Icom_IC-T7H_hgqxjX.img /tmp/Icom_IC-T7H_sTWgxc.img /tmp/Icom_IC-T8A_Scn7IP.img /tmp/Icom_IC-T8A_aTRnYG.img /tmp/Icom_IC-V82_U82_TYFNuQ.img /tmp/Icom_IC-V82_U82_Vz0zml.img /tmp/Icom_IC-W32A_IVgSrF.img /tmp/Icom_IC-W32A_KKICAm.img /tmp/Icom_IC-W32A_PW1Stu.img /tmp/Icom_IC-W32A_VXXZLn.img /tmp/Icom_IC-W32A_VvwsZG.img /tmp/Icom_IC-W32A__lFDOm.img /tmp/Icom_IC-W32E_1veXPJ.img /tmp/Icom_IC-W32E_It_XC1.img /tmp/Icom_IC-W32E_TtzrQg.img /tmp/Icom_IC-W32E_hV5dnC.img /tmp/Icom_IC-W32E_kYnSDA.img /tmp/Icom_IC-W32E_lAcLdB.img /tmp/Icom_ID-31A_Cxuc3C.img /tmp/Icom_ID-31A_jOZpb7.img /tmp/Icom_ID-51 Plus_cuR7Bd.img /tmp/Icom_ID-51 Plus_jWzssh.img /tmp/Icom_ID-51_A0yNZa.img /tmp/Icom_ID-51_iFFYY5.img /tmp/Icom_ID-800H_LLj8gL.img /tmp/Icom_ID-800H_gvhknC.img /tmp/Icom_ID-880H_bckp1v.img /tmp/Icom_ID-880H_oyh0IL.img /tmp/Jetstream_JT220M_DkD5an.img /tmp/Jetstream_JT220M_SjpggK.img /tmp/Jetstream_JT270M_D9MGS7.img /tmp/Jetstream_JT270M_nxubIH.img /tmp/KYD_IP-620_P7hcwG.img /tmp/KYD_IP-620_eR4j3z.img /tmp/Kenwood_TH-D72 (clone mode)_6xMpZK.img /tmp/Kenwood_TH-D72 (clone mode)_Mzsxg0.img /tmp/Kenwood_TK-272G_BvXcKO.img /tmp/Kenwood_TK-272G__miX2w.img /tmp/Kenwood_TK-760G_cr0YnE.img /tmp/Kenwood_TK-760G_yYqXxr.img /tmp/Kenwood_TK-8102_M4ctT6.img /tmp/Kenwood_TK-8102_aGUx7P.img /tmp/Leixen_VV-898_Mrzlmz.img /tmp/Leixen_VV-898_k6XoW2.img /tmp/Polmar_DB-50M_FSdZS2.img /tmp/Polmar_DB-50M_Nz82MR.img /tmp/Puxing_PX-2R_L0A54t.img /tmp/Puxing_PX-2R_gUkqlo.img /tmp/Puxing_PX-777_SxqneL.img /tmp/Puxing_PX-777_zjQGOW.img /tmp/TYT_TH-7800_Hosb3E.img /tmp/TYT_TH-7800_w0sma1.img /tmp/TYT_TH-9800_C6OL24.img /tmp/TYT_TH-9800_aqErUR.img /tmp/TYT_TH-UV3R-25_VPioi8.img /tmp/TYT_TH-UV3R-25_ZmLqdt.img /tmp/TYT_TH-UV3R_K6Lrul.img /tmp/TYT_TH-UV3R_X3OAYY.img /tmp/TYT_TH-UVF1_89AzRA.img /tmp/TYT_TH-UVF1_pZ_0tN.img /tmp/TYT_TH9000_144_Hlg63O.img /tmp/TYT_TH9000_144_nUTkUD.img /tmp/Vertex Standard_VXA-700_9V0jRV.img /tmp/Vertex Standard_VXA-700_kdCV9C.img /tmp/WACCOM_MINI-8900_XKriCb.img /tmp/WACCOM_MINI-8900_swBnsk.img /tmp/Wouxun_KG-816_7uCzDp.img /tmp/Wouxun_KG-816_WYaxTc.img /tmp/Wouxun_KG-818_65CVey.img /tmp/Wouxun_KG-818_KxWjGI.img /tmp/Wouxun_KG-UV6_I0gOME.img /tmp/Wouxun_KG-UV6_K4sWmR.img /tmp/Wouxun_KG-UV8D_Cn6Dz1.img /tmp/Wouxun_KG-UV8D_wdaPKb.img /tmp/Wouxun_KG-UVD1P_HpfXiI.img /tmp/Wouxun_KG-UVD1P_jGfOWy.img /tmp/Yaesu_FT-1802M_4Rew9j.img /tmp/Yaesu_FT-1802M_gIRd9s.img /tmp/Yaesu_FT-1D_5uLOlW.img /tmp/Yaesu_FT-1D_l7TiSu.img /tmp/Yaesu_FT-2800M_8wGTY9.img /tmp/Yaesu_FT-2800M_G7iEks.img /tmp/Yaesu_FT-2900R_1900R_Nbcax2.img /tmp/Yaesu_FT-2900R_1900R_ZHey2Q.img /tmp/Yaesu_FT-50_OXI559.img /tmp/Yaesu_FT-50_QjJMOS.img /tmp/Yaesu_FT-60_LIWvZw.img /tmp/Yaesu_FT-60_xMVX63.img /tmp/Yaesu_FT-7800_7900_Tk3BLb.img /tmp/Yaesu_FT-7800_7900_qMes6v.img /tmp/Yaesu_FT-817ND (US)_6rYP8T.img /tmp/Yaesu_FT-817ND (US)_A_Nk_d.img /tmp/Yaesu_FT-817ND_Bgn0WL.img /tmp/Yaesu_FT-817ND_Vs3q2U.img /tmp/Yaesu_FT-817_RgEvQD.img /tmp/Yaesu_FT-817_Vl1VmR.img /tmp/Yaesu_FT-857_897 (US)_DA4hKd.img /tmp/Yaesu_FT-857_897 (US)_MZRaO_.img /tmp/Yaesu_FT-857_897_LFQxFn.img /tmp/Yaesu_FT-857_897_PXcMEM.img /tmp/Yaesu_FT-8800_3qulvp.img /tmp/Yaesu_FT-8800_DPRUcc.img /tmp/Yaesu_FT-8800_FNLYBI.img /tmp/Yaesu_FT-8800_PuhND0.img /tmp/Yaesu_FT-8800__KS9HS.img /tmp/Yaesu_FT-8800_wUnGxa.img /tmp/Yaesu_FT-8900_DDXzDz.img /tmp/Yaesu_FT-8900_xVpU2T.img /tmp/Yaesu_FTM-350_1Lsjao.img /tmp/Yaesu_FTM-350_9EejST.img /tmp/Yaesu_FTM-350_Tq0PwE.img /tmp/Yaesu_FTM-350_diXIWe.img /tmp/Yaesu_FTM-350_exAeFT.img /tmp/Yaesu_FTM-350_vLiI0R.img /tmp/Yaesu_VX-2_C_SCoP.img /tmp/Yaesu_VX-2_GhUqhu.img /tmp/Yaesu_VX-3_s8RISN.img /tmp/Yaesu_VX-3_sxIUfv.img /tmp/Yaesu_VX-5_M6fzY7.img /tmp/Yaesu_VX-5_mMfaLk.img /tmp/Yaesu_VX-6_0wo9lm.img /tmp/Yaesu_VX-6_0zQzOt.img /tmp/Yaesu_VX-7_hsXMv9.img /tmp/Yaesu_VX-7_yEZQZV.img /tmp/Yaesu_VX-8_Ry2CrT.img /tmp/Yaesu_VX-8_TgbepR.img
Email was triggered for: Success
Sending email for trigger: Success
1
0
[chirp_devel] [PATCH][tk-760g.py] Add the Kenwood Serie 60G UHF HTs, fixes #3487
by Pavel Milanes Costa 25 Aug '16
by Pavel Milanes Costa 25 Aug '16
25 Aug '16
As per an user request, added the following HT for the Kenwood Series 60G:
TK-360G/370G/372G/378G/388G
The band limits are widened, please note the notice in the experimental
popup text.
73 Pavel CO7WT
1
0
[chirp_devel] [PATCH] [RFC] Abstract Bank and BankModel to MemoryMapping and MappingModel
by Dan Smith 24 Aug '16
by Dan Smith 24 Aug '16
24 Aug '16
# HG changeset patch
# User Dan Smith <dsmith(a)danplanet.com>
# Date 1364678018 25200
# Node ID bf1c92a33bfd4c730dcc49095ff9a737b30c33c0
# Parent ede5a4ccfd6efbaed4883c86d93be92509fde8da
[RFC] Abstract Bank and BankModel to MemoryMapping and MappingModel
This is mostly just a search-and-replace for the above names, but makes
way for supporting things like scan lists that behave exactly the same
way.
diff -r ede5a4ccfd6e -r bf1c92a33bfd chirp/chirp_common.py
--- a/chirp/chirp_common.py Sat Mar 30 13:51:51 2013 -0700
+++ b/chirp/chirp_common.py Sat Mar 30 14:13:38 2013 -0700
@@ -543,8 +543,8 @@
except Exception:
self.dv_code = 0
-class Bank:
- """Base class for a radio's Bank"""
+class MemoryMapping(object):
+ """Base class for a memory mapping"""
def __init__(self, model, index, name):
self._model = model
self._index = index
@@ -554,76 +554,84 @@
return self.get_name()
def __repr__(self):
- return "Bank-%s" % self._index
+ return "%s-%s" % (self.__class__.__name__, self._index)
def get_name(self):
- """Returns the static or user-adjustable bank name"""
+ """Returns the mapping name"""
return self._name
def get_index(self):
- """Returns the immutable bank index (string or int)"""
+ """Returns the immutable index (string or int)"""
return self._index
def __eq__(self, other):
return self.get_index() == other.get_index()
+class MappingModel(object):
+ """Base class for a memory mapping model"""
+
+ def __init__(self, radio):
+ self._radio = radio
+
+ def get_num_mappings(self):
+ """Returns the number of mappings in the model (should be
+ callable without consulting the radio"""
+ raise NotImplementedError()
+
+ def get_mappings(self):
+ """Return a list of mappings"""
+ raise NotImplementedError()
+
+ def add_memory_to_mapping(self, memory, mapping):
+ """Add @memory to @mapping."""
+ raise NotImplementedError()
+
+ def remove_memory_from_mapping(self, memory, mapping):
+ """Remove @memory from @mapping.
+ Shall raise exception if @memory is not in @bank"""
+ raise NotImplementedError()
+
+ def get_mapping_memories(self, mapping):
+ """Return a list of memories in @mapping"""
+ raise NotImplementedError()
+
+ def get_memory_mappings(self, memory):
+ """Return a list of mappings that @memory is in"""
+ raise NotImplementedError()
+
+class Bank(MemoryMapping):
+ """Base class for a radio's Bank"""
+ pass
+
class NamedBank(Bank):
"""A bank that can have a name"""
def set_name(self, name):
"""Changes the user-adjustable bank name"""
self._name = name
-class BankModel:
+class BankModel(MappingModel):
"""A bank model where one memory is in zero or one banks at any point"""
- def __init__(self, radio):
- self._radio = radio
+ pass
- def get_num_banks(self):
- """Returns the number of banks (should be callable without
- consulting the radio"""
+class MappingModelIndexInterface:
+ """Interface for mappings with index capabilities"""
+ def get_index_bounds(self):
+ """Returns a tuple (lo,hi) of the min and max mapping indices"""
raise Exception("Not implemented")
- def get_banks(self):
- """Return a list of banks"""
+ def get_memory_index(self, memory, mapping):
+ """Returns the index of @memory in @mapping"""
raise Exception("Not implemented")
- def add_memory_to_bank(self, memory, bank):
- """Add @memory to @bank."""
+ def set_memory_index(self, memory, mapping, index):
+ """Sets the index of @memory in @mapping to @index"""
raise Exception("Not implemented")
- def remove_memory_from_bank(self, memory, bank):
- """Remove @memory from @bank.
- Shall raise exception if @memory is not in @bank."""
- raise Exception("Not implemented")
-
- def get_bank_memories(self, bank):
- """Return a list of memories in @bank"""
- raise Exception("Not implemented")
-
- def get_memory_banks(self, memory):
- """Returns a list of the banks that @memory is in"""
- raise Exception("Not implemented")
-
-class BankIndexInterface:
- """Interface for banks with index capabilities"""
- def get_index_bounds(self):
- """Returns a tuple (lo,hi) of the minimum and maximum bank indices"""
- raise Exception("Not implemented")
-
- def get_memory_index(self, memory, bank):
- """Returns the index of @memory in @bank"""
- raise Exception("Not implemented")
-
- def set_memory_index(self, memory, bank, index):
- """Sets the index of @memory in @bank to @index"""
- raise Exception("Not implemented")
-
- def get_next_bank_index(self, bank):
- """Returns the next available bank index in @bank, or raises
+ def get_next_mapping_index(self, mapping):
+ """Returns the next available mapping index in @mapping, or raises
Exception if full"""
raise Exception("Not implemented")
-
class MTOBankModel(BankModel):
"""A bank model where one memory can be in multiple banks at once """
pass
diff -r ede5a4ccfd6e -r bf1c92a33bfd chirp/ft7800.py
--- a/chirp/ft7800.py Sat Mar 30 13:51:51 2013 -0700
+++ b/chirp/ft7800.py Sat Mar 30 14:13:38 2013 -0700
@@ -336,7 +336,7 @@
class FT7800BankModel(chirp_common.BankModel):
"""Yaesu FT-7800/7900 bank model"""
def __init__(self, radio):
- chirp_common.BankModel.__init__(self, radio)
+ super(FT7800BankModel, self).__init__(radio)
self.__b2m_cache = defaultdict(list)
self.__m2b_cache = defaultdict(list)
@@ -344,24 +344,24 @@
if self.__b2m_cache:
return
- for bank in self.get_banks():
+ for bank in self.get_mappings():
self.__b2m_cache[bank.index] = self._get_bank_memories(bank)
for memnum in self.__b2m_cache[bank.index]:
self.__m2b_cache[memnum].append(bank.index)
- def get_num_banks(self):
+ def get_num_mappings(self):
return 20
- def get_banks(self):
+ def get_mappings(self):
banks = []
- for i in range(0, self.get_num_banks()):
+ for i in range(0, self.get_num_mappings()):
bank = chirp_common.Bank(self, "%i" % i, "BANK-%i" % (i + 1))
bank.index = i
banks.append(bank)
return banks
- def add_memory_to_bank(self, memory, bank):
+ def add_memory_to_mapping(self, memory, bank):
self.__precache()
index = memory.number - 1
@@ -371,7 +371,7 @@
self.__m2b_cache[memory.number].append(bank.index)
self.__b2m_cache[bank.index].append(memory.number)
- def remove_memory_from_bank(self, memory, bank):
+ def remove_memory_from_mapping(self, memory, bank):
self.__precache()
index = memory.number - 1
@@ -395,16 +395,16 @@
memories.append(i + 1)
return memories
- def get_bank_memories(self, bank):
+ def get_mapping_memories(self, bank):
self.__precache()
return [self._radio.get_memory(n)
for n in self.__b2m_cache[bank.index]]
- def get_memory_banks(self, memory):
+ def get_memory_mappings(self, memory):
self.__precache()
- _banks = self.get_banks()
+ _banks = self.get_mappings()
return [_banks[b] for b in self.__m2b_cache[memory.number]]
@directory.register
@@ -473,7 +473,7 @@
"""
class FT8800BankModel(FT7800BankModel):
- def get_num_banks(self):
+ def get_num_mappings(self):
return 10
@directory.register
diff -r ede5a4ccfd6e -r bf1c92a33bfd chirp/icf.py
--- a/chirp/icf.py Sat Mar 30 13:51:51 2013 -0700
+++ b/chirp/icf.py Sat Mar 30 14:13:38 2013 -0700
@@ -485,10 +485,10 @@
central implementation can, with a few icom-specific radio interfaces
serve most/all of them"""
- def get_num_banks(self):
+ def get_num_mappings(self):
return self._radio._num_banks
- def get_banks(self):
+ def get_mappings(self):
banks = []
for i in range(0, self._radio._num_banks):
@@ -498,31 +498,32 @@
banks.append(bank)
return banks
- def add_memory_to_bank(self, memory, bank):
+ def add_memory_to_mapping(self, memory, bank):
self._radio._set_bank(memory.number, bank.index)
- def remove_memory_from_bank(self, memory, bank):
+ def remove_memory_from_mapping(self, memory, bank):
if self._radio._get_bank(memory.number) != bank.index:
raise Exception("Memory %i not in bank %s. Cannot remove." % \
(memory.number, bank))
self._radio._set_bank(memory.number, None)
- def get_bank_memories(self, bank):
+ def get_bank_mappings(self, bank):
memories = []
for i in range(*self._radio.get_features().memory_bounds):
if self._radio._get_bank(i) == bank.index:
memories.append(self._radio.get_memory(i))
return memories
- def get_memory_banks(self, memory):
+ def get_memory_mappings(self, memory):
index = self._radio._get_bank(memory.number)
if index is None:
return []
else:
- return [self.get_banks()[index]]
+ return [self.get_mappings()[index]]
-class IcomIndexedBankModel(IcomBankModel, chirp_common.BankIndexInterface):
+class IcomIndexedBankModel(IcomBankModel,
+ chirp_common.MappingModelIndexInterface):
"""Generic bank model for Icom radios with indexed banks"""
def get_index_bounds(self):
return self._radio._bank_index_bounds
@@ -531,7 +532,7 @@
return self._radio._get_bank_index(memory.number)
def set_memory_index(self, memory, bank, index):
- if bank not in self.get_memory_banks(memory):
+ if bank not in self.get_memory_mappings(memory):
raise Exception("Memory %i is not in bank %s" % (memory.number,
bank))
@@ -539,7 +540,7 @@
raise Exception("Invalid index")
self._radio._set_bank_index(memory.number, index)
- def get_next_bank_index(self, bank):
+ def get_next_mapping_index(self, bank):
indexes = []
for i in range(*self._radio.get_features().memory_bounds):
if self._radio._get_bank(i) == bank.index:
diff -r ede5a4ccfd6e -r bf1c92a33bfd chirp/vx3.py
--- a/chirp/vx3.py Sat Mar 30 13:51:51 2013 -0700
+++ b/chirp/vx3.py Sat Mar 30 14:13:38 2013 -0700
@@ -110,10 +110,10 @@
class VX3BankModel(chirp_common.BankModel):
"""A VX-3 bank model"""
- def get_num_banks(self):
+ def get_num_mappings(self):
return 24
- def get_banks(self):
+ def get_mappings(self):
_banks = self._radio._memobj.bank_names
banks = []
diff -r ede5a4ccfd6e -r bf1c92a33bfd chirp/vx5.py
--- a/chirp/vx5.py Sat Mar 30 13:51:51 2013 -0700
+++ b/chirp/vx5.py Sat Mar 30 14:13:38 2013 -0700
@@ -82,18 +82,18 @@
chirp_common.PowerLevel("L1", watts=0.05)]
class VX5BankModel(chirp_common.BankModel):
- def get_num_banks(self):
+ def get_num_mappings(self):
return 5
- def get_banks(self):
+ def get_mappings(self):
banks = []
- for i in range(0, self.get_num_banks()):
+ for i in range(0, self.get_num_mappings()):
bank = chirp_common.Bank(self, "%i" % (i+1), "MG%i" % (i+1))
bank.index = i
banks.append(bank)
return banks
- def add_memory_to_bank(self, memory, bank):
+ def add_memory_to_mapping(self, memory, bank):
_members = self._radio._memobj.bank_groups[bank.index].members
_bank_used = self._radio._memobj.bank_used[bank.index]
for i in range(0, len(_members)):
@@ -107,7 +107,7 @@
return True
raise Exception(_("{bank} is full").format(bank=bank))
- def remove_memory_from_bank(self, memory, bank):
+ def remove_memory_from_mapping(self, memory, bank):
_members = self._radio._memobj.bank_groups[bank.index].members
_bank_used = self._radio._memobj.bank_used[bank.index]
@@ -128,7 +128,7 @@
if not remaining_members:
_bank_used.current_member = 0xFF
- def get_bank_memories(self, bank):
+ def get_mapping_memories(self, bank):
memories = []
_members = self._radio._memobj.bank_groups[bank.index].members
@@ -143,10 +143,11 @@
memories.append(self._radio.get_memory(member.channel+1))
return memories
- def get_memory_banks(self, memory):
+ def get_memory_mappings(self, memory):
banks = []
- for bank in self.get_banks():
- if memory.number in [x.number for x in self.get_bank_memories(bank)]:
+ for bank in self.get_mappings():
+ if memory.number in [x.number for x in
+ self.get_mapping_memories(bank)]:
banks.append(bank)
return banks
diff -r ede5a4ccfd6e -r bf1c92a33bfd chirp/vx7.py
--- a/chirp/vx7.py Sat Mar 30 13:51:51 2013 -0700
+++ b/chirp/vx7.py Sat Mar 30 14:13:38 2013 -0700
@@ -103,18 +103,18 @@
class VX7BankModel(chirp_common.BankModel):
"""A VX-7 Bank model"""
- def get_num_banks(self):
+ def get_num_mappings(self):
return 9
- def get_banks(self):
+ def get_mappings(self):
banks = []
- for i in range(0, self.get_num_banks()):
+ for i in range(0, self.get_num_mappings()):
bank = chirp_common.Bank(self, "%i" % (i+1), "MG%i" % (i+1))
bank.index = i
banks.append(bank)
return banks
- def add_memory_to_bank(self, memory, bank):
+ def add_memory_to_mapping(self, memory, bank):
_members = self._radio._memobj.bank_members[bank.index]
_bank_used = self._radio._memobj.bank_used[bank.index]
for i in range(0, 48):
@@ -123,7 +123,7 @@
_bank_used.in_use = 0x0000
break
- def remove_memory_from_bank(self, memory, bank):
+ def remove_memory_from_mapping(self, memory, bank):
_members = self._radio._memobj.bank_members[bank.index].members
_bank_used = self._radio._memobj.bank_used[bank.index]
@@ -143,7 +143,7 @@
if not remaining_members:
_bank_used.in_use = 0xFFFF
- def get_bank_memories(self, bank):
+ def get_mapping_memories(self, bank):
memories = []
_members = self._radio._memobj.bank_members[bank.index].members
@@ -158,11 +158,11 @@
memories.append(self._radio.get_memory(number+1))
return memories
- def get_memory_banks(self, memory):
+ def get_memory_mappings(self, memory):
banks = []
- for bank in self.get_banks():
+ for bank in self.get_mappings():
if memory.number in [x.number for x in
- self.get_bank_memories(bank)]:
+ self.get_mapping_memories(bank)]:
banks.append(bank)
return banks
diff -r ede5a4ccfd6e -r bf1c92a33bfd chirp/vx8.py
--- a/chirp/vx8.py Sat Mar 30 13:51:51 2013 -0700
+++ b/chirp/vx8.py Sat Mar 30 14:13:38 2013 -0700
@@ -151,10 +151,10 @@
class VX8BankModel(chirp_common.BankModel):
"""A VX-8 bank model"""
- def get_num_banks(self):
+ def get_num_mappings(self):
return 24
- def get_banks(self):
+ def get_mappings(self):
banks = []
_banks = self._radio._memobj.bank_info
@@ -174,7 +174,7 @@
flags = self._radio._memobj.flag
# Find a suitable bank and MR for VFO A and B.
- for bank in self.get_banks():
+ for bank in self.get_mappings():
bank_used = self._radio._memobj.bank_used[bank.index]
if bank_used != 0xFFFF:
members = self._radio._memobj.bank_members[bank.index]
@@ -213,7 +213,7 @@
vfo_bak.mr_index = vfo.mr_index
vfo_bak.bank_enable = vfo.bank_enable
- def add_memory_to_bank(self, memory, bank):
+ def add_memory_to_mapping(self, memory, bank):
_members = self._radio._memobj.bank_members[bank.index]
_bank_used = self._radio._memobj.bank_used[bank.index]
for i in range(0, 100):
@@ -224,7 +224,7 @@
self.update_vfo()
- def remove_memory_from_bank(self, memory, bank):
+ def remove_memory_from_mapping(self, memory, bank):
_members = self._radio._memobj.bank_members[bank.index]
_bank_used = self._radio._memobj.bank_used[bank.index]
@@ -246,7 +246,7 @@
self.update_vfo()
- def get_bank_memories(self, bank):
+ def get_mapping_memories(self, bank):
memories = []
_members = self._radio._memobj.bank_members[bank.index]
_bank_used = self._radio._memobj.bank_used[bank.index]
@@ -260,11 +260,11 @@
return memories
- def get_memory_banks(self, memory):
+ def get_memory_mappings(self, memory):
banks = []
- for bank in self.get_banks():
+ for bank in self.get_mappings():
if memory.number in \
- [x.number for x in self.get_bank_memories(bank)]:
+ [x.number for x in self.get_mapping_memories(bank)]:
banks.append(bank)
return banks
diff -r ede5a4ccfd6e -r bf1c92a33bfd chirpui/bankedit.py
--- a/chirpui/bankedit.py Sat Mar 30 13:51:51 2013 -0700
+++ b/chirpui/bankedit.py Sat Mar 30 14:13:38 2013 -0700
@@ -22,68 +22,70 @@
from chirp import chirp_common
from chirpui import common, miscwidgets
-class BankNamesJob(common.RadioJob):
- def __init__(self, bm, editor, cb):
+class MappingNamesJob(common.RadioJob):
+ def __init__(self, model, editor, cb):
common.RadioJob.__init__(self, cb, None)
- self.__bm = bm
+ self.__model = model
self.__editor = editor
def execute(self, radio):
- self.__editor.banks = []
+ self.__editor.mappings = []
- banks = self.__bm.get_banks()
- for bank in banks:
- self.__editor.banks.append((bank, bank.get_name()))
+ mappings = self.__model.get_mappings()
+ for mapping in mappings:
+ self.__editor.mappings.append((mapping, mapping.get_name()))
gobject.idle_add(self.cb, *self.cb_args)
-class BankNameEditor(common.Editor):
+class MappingNameEditor(common.Editor):
+ TYPE = _("Mapping")
+
def refresh(self):
- def got_banks():
+ def got_mappings():
self._keys = []
- for bank, name in self.banks:
- self._keys.append(bank.get_index())
- self.listw.set_item(bank.get_index(),
- bank.get_index(),
+ for mapping, name in self.mappings:
+ self._keys.append(mapping.get_index())
+ self.listw.set_item(mapping.get_index(),
+ mapping.get_index(),
name)
- self.listw.connect("item-set", self.bank_changed)
+ self.listw.connect("item-set", self.mapping_changed)
- job = BankNamesJob(self._bm, self, got_banks)
- job.set_desc(_("Retrieving bank information"))
+ job = MappingNamesJob(self._model, self, got_mappings)
+ job.set_desc(_("Retrieving %s information") % self.TYPE)
self.rthread.submit(job)
- def get_bank_list(self):
- banks = []
+ def get_mapping_list(self):
+ mappings = []
keys = self.listw.get_keys()
for key in keys:
- banks.append(self.listw.get_item(key)[2])
+ mappings.append(self.listw.get_item(key)[2])
- return banks
-
- def bank_changed(self, listw, key):
+ return mappings
+
+ def mapping_changed(self, listw, key):
def cb(*args):
self.emit("changed")
name = self.listw.get_item(key)[2]
- bank, oldname = self.banks[self._keys.index(key)]
+ mapping, oldname = self.mappings[self._keys.index(key)]
def trigger_changed(*args):
self.emit("changed")
job = common.RadioJob(trigger_changed, "set_name", name)
- job.set_target(bank)
- job.set_desc(_("Setting name on bank"))
+ job.set_target(mapping)
+ job.set_desc(_("Setting name on %s") % self.TYPE.lower())
self.rthread.submit(job)
return True
- def __init__(self, rthread):
- super(BankNameEditor, self).__init__(rthread)
- self._bm = rthread.radio.get_bank_model()
+ def __init__(self, rthread, model):
+ super(MappingNameEditor, self).__init__(rthread)
+ self._model = model
types = [(gobject.TYPE_STRING, "key"),
- (gobject.TYPE_STRING, _("Bank")),
+ (gobject.TYPE_STRING, self.TYPE),
(gobject.TYPE_STRING, _("Name"))]
self.listw = miscwidgets.KeyedListWidget(types)
@@ -92,7 +94,7 @@
self.listw.set_sort_column(1, -1)
self.listw.show()
- self.banks = []
+ self.mappings = []
sw = gtk.ScrolledWindow()
sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
@@ -108,51 +110,61 @@
self.refresh()
self._loaded = True
-class MemoryBanksJob(common.RadioJob):
- def __init__(self, bm, cb, number):
+class BankNameEditor(MappingNameEditor):
+ TYPE = _("Bank")
+
+ def __init__(self, rthread):
+ model = rthread.radio.get_bank_model()
+ super(BankNameEditor, self).__init__(rthread, model)
+
+class MemoryMappingsJob(common.RadioJob):
+ def __init__(self, model, cb, number):
common.RadioJob.__init__(self, cb, None)
- self.__bm = bm
+ self.__model = model
self.__number = number
def execute(self, radio):
mem = radio.get_memory(self.__number)
if mem.empty:
- banks = []
+ mappings = []
indexes = []
else:
- banks = self.__bm.get_memory_banks(mem)
+ mappings = self.__model.get_memory_mappings(mem)
indexes = []
- if isinstance(self.__bm, chirp_common.BankIndexInterface):
- for bank in banks:
- indexes.append(self.__bm.get_memory_index(mem, bank))
- self.cb(mem, banks, indexes, *self.cb_args)
+ if isinstance(self.__model,
+ chirp_common.MappingModelIndexInterface):
+ for mapping in mappings:
+ indexes.append(self.__model.get_memory_index(mem, mapping))
+ self.cb(mem, mappings, indexes, *self.cb_args)
-class BankMembershipEditor(common.Editor):
+class MappingMembershipEditor(common.Editor):
+ TYPE = _("Mapping")
+
def _number_to_path(self, number):
return (number - self._rf.memory_bounds[0],)
- def _get_next_bank_index(self, bank):
- # NB: Only works for one-to-one bank models right now!
+ def _get_next_mapping_index(self, mapping):
+ # NB: Only works for one-to-one models right now!
iter = self._store.get_iter_first()
indexes = []
- ncols = len(self._cols) + len(self.banks)
+ ncols = len(self._cols) + len(self.mappings)
while iter:
vals = self._store.get(iter, *tuple([n for n in range(0, ncols)]))
loc = vals[self.C_LOC]
index = vals[self.C_INDEX]
- banks = vals[self.C_BANKS:]
- if True in banks and banks.index(True) == bank:
+ mappings = vals[self.C_MAPPINGS:]
+ if True in mappings and mappings.index(True) == mapping:
indexes.append(index)
iter = self._store.iter_next(iter)
- index_bounds = self._bm.get_index_bounds()
+ index_bounds = self._model.get_index_bounds()
num_indexes = index_bounds[1] - index_bounds[0]
indexes.sort()
for i in range(0, num_indexes):
if i not in indexes:
return i + index_bounds[0] # In case not zero-origin index
- return 0 # If the bank is full, just wrap around!
+ return 0 # If the mapping is full, just wrap around!
def _toggled_cb(self, rend, path, colnum):
try:
@@ -164,56 +176,60 @@
if not self._store.get(iter, self.C_FILLED)[0]:
return
- # The bank index is the column number, minus the 3 label columns
- bank, name = self.banks[colnum - len(self._cols)]
+ # The mapping index is the column number, minus the 3 label columns
+ mapping, name = self.mappings[colnum - len(self._cols)]
loc, = self._store.get(self._store.get_iter(path), self.C_LOC)
+ is_indexed = isinstance(self._model,
+ chirp_common.MappingModelIndexInterface)
+
if rend.get_active():
# Changing from True to False
- fn = "remove_memory_from_bank"
+ fn = "remove_memory_from_mapping"
index = None
else:
# Changing from False to True
- fn = "add_memory_to_bank"
- if self._rf.has_bank_index:
- index = self._get_next_bank_index(colnum - len(self._cols))
+ fn = "add_memory_to_mapping"
+ if is_indexed:
+ index = self._get_next_mapping_index(colnum - len(self._cols))
else:
index = None
def do_refresh_memory(*args):
- # Step 2: Update our notion of the memory's bank information
+ # Step 2: Update our notion of the memory's mapping information
self.refresh_memory(loc)
- def do_bank_index(result, memory):
+ def do_mapping_index(result, memory):
if isinstance(result, Exception):
- common.show_error("Failed to add {mem} to bank: {err}"
+ common.show_error("Failed to add {mem} to mapping: {err}"
.format(mem=memory.number,
err=str(result)),
parent=self.editorset.parent_window)
return
self.emit("changed")
- # Step 3: Set the memory's bank index (maybe)
- if not self._rf.has_bank_index or index is None:
+ # Step 3: Set the memory's mapping index (maybe)
+ if not is_indexed or index is None:
return do_refresh_memory()
job = common.RadioJob(do_refresh_memory,
- "set_memory_index", memory, bank, index)
- job.set_target(self._bm)
- job.set_desc(_("Updating bank index "
- "for memory {num}").format(num=memory.number))
+ "set_memory_index", memory, mapping, index)
+ job.set_target(self._model)
+ job.set_desc(_("Updating {type} index "
+ "for memory {num}").format(type=self.TYPE,
+ num=memory.number))
self.rthread.submit(job)
- def do_bank_adjustment(memory):
- # Step 1: Do the bank add/remove
- job = common.RadioJob(do_bank_index, fn, memory, bank)
- job.set_target(self._bm)
+ def do_mapping_adjustment(memory):
+ # Step 1: Do the mapping add/remove
+ job = common.RadioJob(do_mapping_index, fn, memory, mapping)
+ job.set_target(self._model)
job.set_cb_args(memory)
- job.set_desc(_("Updating bank information "
+ job.set_desc(_("Updating mapping information "
"for memory {num}").format(num=memory.number))
self.rthread.submit(job)
# Step 0: Fetch the memory
- job = common.RadioJob(do_bank_adjustment, "get_memory", loc)
+ job = common.RadioJob(do_mapping_adjustment, "get_memory", loc)
job.set_desc(_("Getting memory {num}").format(num=loc))
self.rthread.submit(job)
@@ -223,36 +239,37 @@
def refresh_memory(*args):
self.refresh_memory(loc)
- def set_index(banks, memory):
+ def set_index(mappings, memory):
self.emit("changed")
# Step 2: Set the index
job = common.RadioJob(refresh_memory, "set_memory_index",
- memory, banks[0], int(new))
- job.set_target(self._bm)
+ memory, mappings[0], int(new))
+ job.set_target(self._model)
job.set_desc(_("Setting index "
"for memory {num}").format(num=memory.number))
self.rthread.submit(job)
- def get_bank(memory):
- # Step 1: Get the first/only bank
- job = common.RadioJob(set_index, "get_memory_banks", memory)
+ def get_mapping(memory):
+ # Step 1: Get the first/only mapping
+ job = common.RadioJob(set_index, "get_memory_mappings", memory)
job.set_cb_args(memory)
- job.set_target(self._bm)
- job.set_desc(_("Getting bank for "
- "memory {num}").format(num=memory.number))
+ job.set_target(self._model)
+ job.set_desc(_("Getting {type} for "
+ "memory {num}").format(type=self.TYPE,
+ num=memory.number))
self.rthread.submit(job)
# Step 0: Get the memory
- job = common.RadioJob(get_bank, "get_memory", loc)
+ job = common.RadioJob(get_mapping, "get_memory", loc)
job.set_desc(_("Getting memory {num}").format(num=loc))
self.rthread.submit(job)
- def __init__(self, rthread, editorset):
- super(BankMembershipEditor, self).__init__(rthread)
+ def __init__(self, rthread, editorset, model):
+ super(MappingMembershipEditor, self).__init__(rthread)
self.editorset = editorset
self._rf = rthread.radio.get_features()
- self._bm = rthread.radio.get_bank_model()
+ self._model = model
self._view_cols = [
(_("Loc"), TYPE_INT, gtk.CellRendererText, ),
@@ -270,19 +287,22 @@
self.C_FREQ = 2
self.C_NAME = 3
self.C_INDEX = 4
- self.C_BANKS = 5 # and beyond
+ self.C_MAPPINGS = 5 # and beyond
cols = list(self._cols)
self._index_cache = []
- for i in range(0, self._bm.get_num_banks()):
- label = "Bank %i" % (i+1)
+ for i in range(0, self._model.get_num_mappings()):
+ label = "%s %i" % (self.TYPE, (i+1))
cols.append((label, TYPE_BOOLEAN, gtk.CellRendererToggle))
self._store = gtk.ListStore(*tuple([y for x,y,z in cols]))
self._view = gtk.TreeView(self._store)
+ is_indexed = isinstance(self._model,
+ chirp_common.MappingModelIndexInterface)
+
colnum = 0
for label, dtype, rtype in cols:
if not rtype:
@@ -305,7 +325,7 @@
elif colnum == self.C_INDEX:
rend.set_property("editable", True)
rend.connect("edited", self._index_edited_cb)
- col.set_visible(self._rf.has_bank_index)
+ col.set_visible(is_indexed)
colnum += 1
# A non-rendered column to absorb extra space in the row
@@ -329,7 +349,7 @@
self._loaded = False
def refresh_memory(self, number):
- def got_mem(memory, banks, indexes):
+ def got_mem(memory, mappings, indexes):
iter = self._store.get_iter(self._number_to_path(memory.number))
row = [self.C_FILLED, not memory.empty,
self.C_LOC, memory.number,
@@ -338,29 +358,30 @@
# Hack for only one index right now
self.C_INDEX, indexes and indexes[0] or 0,
]
- for i in range(0, len(self.banks)):
+ for i in range(0, len(self.mappings)):
row.append(i + len(self._cols))
- row.append(self.banks[i][0] in banks)
+ row.append(self.mappings[i][0] in mappings)
self._store.set(iter, *tuple(row))
if memory.number == self._rf.memory_bounds[1] - 1:
- print "Got all bank info in %s" % (time.time() - self._start)
+ print "Got all %s info in %s" % (self.TYPE,
+ (time.time() - self._start))
- job = MemoryBanksJob(self._bm, got_mem, number)
- job.set_desc(_("Getting bank information "
- "for memory {num}").format(num=number))
+ job = MemoryMappingsJob(self._model, got_mem, number)
+ job.set_desc(_("Getting {type} information "
+ "for memory {num}").format(type=self.TYPE, num=number))
self.rthread.submit(job)
def refresh_all_memories(self):
for i in range(*self._rf.memory_bounds):
self.refresh_memory(i)
- def refresh_banks(self, and_memories=False):
- def got_banks():
+ def refresh_mappings(self, and_memories=False):
+ def got_mappings():
for i in range(len(self._cols) - len(self._view_cols) - 1,
- len(self.banks)):
+ len(self.mappings)):
col = self._view.get_column(i + len(self._view_cols))
- bank, name = self.banks[i]
+ mapping, name = self.mappings[i]
if name:
col.set_title(name)
else:
@@ -368,8 +389,8 @@
if and_memories:
self.refresh_all_memories()
- job = BankNamesJob(self._bm, self, got_banks)
- job.set_desc(_("Getting bank information"))
+ job = MappingNamesJob(self._model, self, got_mappings)
+ job.set_desc(_("Getting %s information") % self.TYPE)
self.rthread.submit(job)
def focus(self):
@@ -378,7 +399,7 @@
return
self._start = time.time()
- self.refresh_banks(True)
+ self.refresh_mappings(True)
self._loaded = True
@@ -387,5 +408,15 @@
if self.is_focused():
self.refresh_all_memories()
+ def mappings_changed(self):
+ self.refresh_mappings()
+
+class BankMembershipEditor(MappingMembershipEditor):
+ TYPE = _("Bank")
+
+ def __init__(self, rthread, editorset):
+ model = rthread.radio.get_bank_model()
+ super(BankMembershipEditor, self).__init__(rthread, editorset, model)
+
def banks_changed(self):
- self.refresh_banks()
+ self.mappings_changed()
2
3
# HG changeset patch
# User Brian Dickman <brian.maybe(a)gmail.com>
# Date 1471831223 25200
# Sun Aug 21 19:00:23 2016 -0700
# Node ID 1f5e2808ac9895b1d32077e47043c694ea96ef0d
# Parent 00d272840a83b8ceef14a7dd52da8a6aa411be76
[wouxun] Prevent KGUVD1PRadio driver from over-matching on leixen 898S
images (copy from same fix on KG816, in preparation for leixen 898S
driver and image), fixes #3947
The KGUVD1 match isn't very discriminate; basically any 8k image with
lots of 0xff toward the end could match. This copies the filter used
in the KG816 driver. Specifically the driver was matching to the 898S
test image that will be added shortly, and this fixes it, but other
users could run into the problem as well.
diff -r 00d272840a83 -r 1f5e2808ac98 chirp/drivers/wouxun.py
--- a/chirp/drivers/wouxun.py Sun Aug 21 13:06:15 2016 -0700
+++ b/chirp/drivers/wouxun.py Sun Aug 21 19:00:23 2016 -0700
@@ -887,6 +887,7 @@
# New-style image (CHIRP 0.1.12)
if len(filedata) == 8192 and \
filedata[0x60:0x64] != "2009" and \
+ filedata[0x170:0x173] != "LX-" and \
filedata[0x1f77:0x1f7d] == "\xff\xff\xff\xff\xff\xff" and \
filedata[0x0d70:0x0d80] == "\xff\xff\xff\xff\xff\xff\xff\xff" \
"\xff\xff\xff\xff\xff\xff\xff\xff":
1
0
# HG changeset patch
# User Jim Unroe <rock.unroe(a)gmail.com>
# Date 1471640983 14400
# Node ID 12ac740220c59eae761287076df64265c3281a8c
# Parent e4a3c048aacb27e5ded471e3ac6c1c83f85fd26d
[UV-6R] Adjust Channel Name Length
Most other Baofeng radios of this type support 7 character channel
names. It was reported that the UV-6R only supports 6 chararacter
channel names. This patch adjusts the name length to 6 characters.
related to #2761
diff -r e4a3c048aacb -r 12ac740220c5 chirp/drivers/uv6r.py
--- a/chirp/drivers/uv6r.py Fri Aug 19 16:50:57 2016 -0400
+++ b/chirp/drivers/uv6r.py Fri Aug 19 17:09:43 2016 -0400
@@ -114,7 +114,7 @@
MODES = ["FM", "NFM"]
VALID_CHARS = chirp_common.CHARSET_ALPHANUMERIC + \
"!@#$%^&*()+-=[]:\";'<>?,./"
- LENGTH_NAME = 7
+ LENGTH_NAME = 6
SKIP_VALUES = ["", "S"]
DTCS_CODES = sorted(chirp_common.DTCS_CODES + [645])
POWER_LEVELS = [chirp_common.PowerLevel("High", watts=5.00),
@@ -281,8 +281,8 @@
#seekto 0x1000;
struct {
- char name[7];
- u8 unknown[9];
+ char name[6];
+ u8 unknown[10];
} names[128];
#seekto 0x1F40;
1
0