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
July 2016
- 8 participants
- 31 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] [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
My name is David and I use Chirp for my newer radios. I have some TK-280's
and thought it would be a good exercise to work up the interface and code
to program these. I know, I have no idea. I will try and keep my
questions to a minimum.
Any suggestions to tips or techniques to look into these rigs?
I made the assumption that the existing TK G series in Chirp would be close
to what was needed. Following that idea I tried some of the existing
models but the program failed due to a model mismatch, or that is how I
read it. So I copied one model and reworked the entry, put that into the
.py. Running the program I was able to choose the TK-280 from the list but
got this error ...
'Serial' object has no attribute 'setTimeout'
Which is in the program code some where. Was it reading the usb chip or
the radio?
Ubuntu 16.04
Cheap Prolific programming cable
David
3
3
Tested changes:
[Pavel Milanes (CO7WT) <pavelmc(a)gmail.com>] [PATCH][Kenwood Serie 60G] Widen the band limits for some radios, fixes #3813
The OEM software for this radios can program it out of it's default band limits, some of the models has ranges of operations close but outside the ham bands.
This patch widen the default band limits for this radios, allowing the programming of these for hamm radio use, some of the new limits are tested by me and others by Stephen GN5SWP, other are just guesses.
[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 40bd8f0f9d8beefbd061ca72518d641e84a077e8
[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 40bd8f0f9d8beefbd061ca72518d641e84a077e8
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson4189321743963249247.sh
[workspace] $ /bin/sh -xe /tmp/hudson7854708798918757561.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.054s
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.575s
user 0m7.468s
sys 0m0.032s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-07-30 13:43:51,194] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 16.04.1 LTS (Python 2.7.12)
[2016-07-30 13:43:51,231] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-07-30 13:43:51,231] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-07-30 13:43:51,232] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-07-30 13:43:51,232] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-07-30 13:43:51,232] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-07-30 13:43:51,232] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-07-30 13:43:51,232] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-07-30 13:43:51,232] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-07-30 13:43:51,232] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-07-30 13:43:51,232] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-07-30 13:43:51,232] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-07-30 13:43:51,232] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-07-30 13:43:51,232] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-07-30 13:43:51,232] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-07-30 13:43:51,233] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-07-30 13:43:51,233] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-07-30 13:43:51,233] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-07-30 13:43:51,233] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-07-30 13:43:51,233] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-07-30 13:43:51,234] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-07-30 13:43:51,234] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-07-30 13:43:51,234] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-07-30 13:43:51,234] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-07-30 13:43:51,234] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-07-30 13:43:51,234] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-07-30 13:43:51,234] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-07-30 13:43:51,234] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-07-30 13:43:51,235] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-07-30 13:43:51,235] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-07-30 13:43:51,235] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-07-30 13:43:51,235] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-07-30 13:43:51,235] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-07-30 13:43:51,235] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-07-30 13:43:51,236] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-07-30 13:43:51,236] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-07-30 13:43:51,237] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-07-30 13:43:51,237] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-07-30 13:43:51,237] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-07-30 13:43:51,237] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-07-30 13:43:51,237] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-07-30 13:43:51,237] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-07-30 13:43:51,237] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-07-30 13:43:51,237] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-07-30 13:43:51,238] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-07-30 13:43:51,238] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-07-30 13:43:51,238] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-07-30 13:43:51,238] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-07-30 13:43:51,238] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-07-30 13:43:51,238] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-07-30 13:43:51,239] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-07-30 13:43:51,239] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-07-30 13:43:51,239] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-07-30 13:43:51,239] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-07-30 13:43:51,239] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-07-30 13:43:51,239] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-07-30 13:43:51,239] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-07-30 13:43:51,239] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-07-30 13:43:51,239] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-07-30 13:43:51,239] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-07-30 13:43:51,240] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-07-30 13:43:51,241] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-07-30 13:43:51,241] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-07-30 13:43:51,241] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-07-30 13:43:51,242] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-07-30 13:43:51,242] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-07-30 13:43:51,242] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-07-30 13:43:51,242] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-07-30 13:43:51,243] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-07-30 13:43:51,243] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-07-30 13:43:51,243] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-07-30 13:43:51,243] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-07-30 13:43:51,243] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-07-30 13:43:51,244] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-07-30 13:43:51,244] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-07-30 13:43:51,244] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-07-30 13:43:51,244] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-07-30 13:43:51,245] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-07-30 13:43:51,245] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-07-30 13:43:51,245] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-07-30 13:43:51,245] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-07-30 13:43:51,253] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-07-30 13:43:51,256] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-07-30 13:43:51,256] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-07-30 13:43:51,256] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-07-30 13:43:51,256] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-07-30 13:43:51,257] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-07-30 13:43:51,257] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-07-30 13:43:51,257] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-07-30 13:43:51,257] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-07-30 13:43:51,258] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-07-30 13:43:51,258] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-07-30 13:43:51,258] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-07-30 13:43:51,258] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-07-30 13:43:51,258] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-07-30 13:43:51,258] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-07-30 13:43:51,259] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-07-30 13:43:51,259] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-07-30 13:43:51,259] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-07-30 13:43:51,259] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-07-30 13:43:51,260] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-07-30 13:43:51,260] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-07-30 13:43:51,260] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-07-30 13:43:51,260] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-07-30 13:43:51,260] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-07-30 13:43:51,261] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-07-30 13:43:51,261] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-07-30 13:43:51,261] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-07-30 13:43:51,262] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-07-30 13:43:51,262] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-07-30 13:43:51,262] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-07-30 13:43:51,262] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-07-30 13:43:51,262] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-07-30 13:43:51,263] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-07-30 13:43:51,263] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-07-30 13:43:51,263] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-07-30 13:43:51,263] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-07-30 13:43:51,263] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-07-30 13:43:51,264] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-07-30 13:43:51,264] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-07-30 13:43:51,264] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-07-30 13:43:51,264] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-07-30 13:43:51,264] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-07-30 13:43:51,264] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-07-30 13:43:51,265] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-07-30 13:43:51,266] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-07-30 13:43:51,266] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-07-30 13:43:51,266] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-07-30 13:43:51,266] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-07-30 13:43:51,267] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-07-30 13:43:51,267] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-07-30 13:43:51,267] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-07-30 13:43:51,267] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-07-30 13:43:51,267] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-07-30 13:43:51,267] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-07-30 13:43:51,267] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-07-30 13:43:51,267] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-07-30 13:43:51,268] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-07-30 13:43:51,268] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-07-30 13:43:51,268] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-07-30 13:43:51,268] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-07-30 13:43:51,268] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-07-30 13:43:51,268] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-07-30 13:43:51,268] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-07-30 13:43:51,268] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-07-30 13:43:51,269] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-07-30 13:43:51,269] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-07-30 13:43:51,269] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-07-30 13:43:51,269] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-07-30 13:43:51,269] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-07-30 13:43:51,269] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-07-30 13:43:51,269] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-07-30 13:43:51,269] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-07-30 13:43:51,269] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-07-30 13:43:51,270] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-07-30 13:43:51,270] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-07-30 13:43:51,270] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-07-30 13:43:51,270] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-07-30 13:43:51,271] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2016-07-30 13:43:51,271] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-07-30 13:43:51,271] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-07-30 13:43:51,272] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-07-30 13:43:51,272] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-07-30 13:43:51,272] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-07-30 13:43:51,273] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-07-30 13:43:51,273] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-07-30 13:43:51,273] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-07-30 13:43:51,273] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-07-30 13:43:51,274] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
+ rm /tmp/Alinco_DJ175_s8kRnS.img /tmp/Alinco_DJ596_2GLvj_.img /tmp/Alinco_DR235T_aAVCFm.img /tmp/AnyTone_OBLTR-8R_8qMeXJ.img /tmp/AnyTone_TERMN-8R_Cmdonz.img /tmp/BTECH_UV-2501+220_bJm1Bz.img /tmp/BTECH_UV-5001_4k7uBv.img /tmp/BTECH_UV-50X3_IZO5wI.img /tmp/BTECH_UV-50X3_OVDbmq.img /tmp/BTECH_UV-50X3_tgIOtO.img /tmp/Baofeng_BF-888_Um_RbS.img /tmp/Baofeng_F-11_0AaPCU.img /tmp/Baofeng_UV-3R_BalLZn.img /tmp/Baofeng_UV-5R_GaJmm0.img /tmp/Baofeng_UV-B5_u_AQRy.img /tmp/Baojie_BJ-9900_7a6hYj.img /tmp/Baojie_BJ-9900_OnVK0X.img /tmp/Baojie_BJ-9900_lDcZAq.img /tmp/Feidaxin_FD-268A_oQRyDI.img /tmp/Feidaxin_FD-268B_Gez6pt.img /tmp/Feidaxin_FD-288B_1d1HSQ.img /tmp/Icom_IC-208H_L748t2.img /tmp/Icom_IC-2100H_5MB2GV.img /tmp/Icom_IC-2200H_JDlO5R.img /tmp/Icom_IC-2720H_pfC8rG.img /tmp/Icom_IC-2820H_wEeMa8.img /tmp/Icom_IC-Q7A_wL5FUG.img /tmp/Icom_IC-T70_WYaIWC.img /tmp/Icom_IC-T7H_sKQ9DW.img /tmp/Icom_IC-T8A_q2mg_f.img /tmp/Icom_IC-V82_U82_orq1y2.img /tmp/Icom_IC-W32A_6uzzA5.img /tmp/Icom_IC-W32A_XurmxX.img /tmp/Icom_IC-W32A_hydWlr.img /tmp/Icom_IC-W32E_VmOM7R.img /tmp/Icom_IC-W32E_Vt8TlU.img /tmp/Icom_IC-W32E_eZbkCA.img /tmp/Icom_ID-31A_m6MNWp.img /tmp/Icom_ID-51 Plus_DF8qyT.img /tmp/Icom_ID-51_qtTzAV.img /tmp/Icom_ID-800H_tk4hV7.img /tmp/Icom_ID-880H_4IC7S6.img /tmp/Jetstream_JT220M_9WcAVb.img /tmp/Jetstream_JT270M_zIFSgV.img /tmp/KYD_IP-620_o1Qw9c.img /tmp/Kenwood_TH-D72 (clone mode)_Ct243j.img /tmp/Kenwood_TK-272G_YYsdjN.img /tmp/Kenwood_TK-760G_V_Ztrg.img /tmp/Kenwood_TK-8102_NSG1iN.img /tmp/Leixen_VV-898_NVWyvw.img /tmp/Polmar_DB-50M_pDNILC.img /tmp/Puxing_PX-2R_g14Xvv.img /tmp/Puxing_PX-777_DFGveO.img /tmp/TYT_TH-7800_QOzn2i.img /tmp/TYT_TH-9800_30R6I4.img /tmp/TYT_TH-UV3R-25_uGcFAX.img /tmp/TYT_TH-UV3R_LKw1qe.img /tmp/TYT_TH-UVF1_KuX2J8.img /tmp/TYT_TH9000_144_qk9DdC.img /tmp/Vertex Standard_VXA-700_mtcWlg.img /tmp/WACCOM_MINI-8900_DXzK2R.img /tmp/Wouxun_KG-816_zb8D2U.img /tmp/Wouxun_KG-818_gmkFbb.img /tmp/Wouxun_KG-UV6_73SiTp.img /tmp/Wouxun_KG-UV8D_AEpw0B.img /tmp/Wouxun_KG-UVD1P_3Krw8K.img /tmp/Yaesu_FT-1802M_UyDwL4.img /tmp/Yaesu_FT-1D_1BTkHE.img /tmp/Yaesu_FT-2800M_CcVmlb.img /tmp/Yaesu_FT-2900R_1900R_oLpIK2.img /tmp/Yaesu_FT-50_mXRUhy.img /tmp/Yaesu_FT-60_xrlc6k.img /tmp/Yaesu_FT-7800_7900_5pBYCM.img /tmp/Yaesu_FT-817ND (US)_JxBMc5.img /tmp/Yaesu_FT-817ND_VXWDzw.img /tmp/Yaesu_FT-817_XWQl3G.img /tmp/Yaesu_FT-857_897 (US)_NvF1Ko.img /tmp/Yaesu_FT-857_897_LiBxY8.img /tmp/Yaesu_FT-8800_CFQt2N.img /tmp/Yaesu_FT-8800_fZ8h19.img /tmp/Yaesu_FT-8800_jf4JsE.img /tmp/Yaesu_FT-8900_PYj42D.img /tmp/Yaesu_FTM-350_8Sxujj.img /tmp/Yaesu_FTM-350__J7SFr.img /tmp/Yaesu_FTM-350_qM4C0V.img /tmp/Yaesu_VX-2_9UDd2H.img /tmp/Yaesu_VX-3_zNcv2U.img /tmp/Yaesu_VX-5_qmPkNO.img /tmp/Yaesu_VX-6_xTjryv.img /tmp/Yaesu_VX-7_JQ3gQb.img /tmp/Yaesu_VX-8_ris3H_.img
Email was triggered for: Success
Sending email for trigger: Success
1
0
Hello all.
I have two Alinco DR-635T radios and am looking to CHIRP as a way to
manage the memories between them. I recently purchased an interface
cable and decided to test things this morning. I am aware the radio is
presently not supported and have read bug 313 and the three other bugs
requesting support for this radio.
I added the patch supplied by Richard Shaw in bug 313 to
chirp/drivers/alinco.py with a modification to the 2 meter range
changing 335000000 to 136000000. After verifying my adapter is to be
found at /dev/ttyUSB0, I connected the cable to the powered off radio
and then powered it back on. As my modified version of CHIRP now shows
the DR-635T, I tried to download from it and received the following
failure in the terminal I launched chirpw from:
ERROR: -- Exception: --
ERROR: Traceback (most recent call last):
File "/home/nate/git/chirp.hg/chirp/ui/clone.py", line 238, in run
self.__radio.sync_in()
File "/home/nate/git/chirp.hg/chirp/drivers/alinco.py", line 196, in sync_in
self._mmap = self._download(self._memsize)
File "/home/nate/git/chirp.hg/chirp/drivers/alinco.py", line 138, in _download
data += self._download_chunk(addr)
File "/home/nate/git/chirp.hg/chirp/drivers/alinco.py", line 116, in _download_chunk
raise errors.RadioError("No response from radio")
RadioError: No response from radio
ERROR: ----------------
ERROR: Clone failed: No response from radio
ERROR: --- Exception Dialog: No response from radio ---
ERROR: None
I also tried setting the radio into clone mode as the master while
attempting to read from CHIRP and received the same error text as above.
What is my next step for trying to read the memory data?
This is new territory for me as I've been involved with the Hamlib
project for some time and am used to working with (mostly)
documented protocols. As I see it the radio *should* be capable of
being supported by CHIRP as a proprietary program claims support.
73, Nate N0NB
--
"The optimist proclaims that we live in the best of all
possible worlds. The pessimist fears this is true."
Ham radio, Linux, bikes, and more: http://www.n0nb.us
3
6
I added support for the TYT TH-7800 pretty recently and was curious when it
would show up on the Supported Radio Wiki page. Someone found my email
address in the bug database and asked me about it. I pinged Dan and got
his response below. I'm submitting the info to the dev list so others can
reference it here.
> In general, you the patch author should do that. I just enabled that on
> your wiki account so you should be able to edit it now.
I updated the Wiki last night. If I had to guess based on traffic to this
list, there are a few models supported in the code that aren't listed on
the Wiki. Taking that last step to update the Wiki will help more people
to enjoy this awesome software.
Regards,
Nathan
3
3
Lets say I have a 128 channel radio that is similar to a Baofeng UV-5R
but with some differences.
The 1st difference would be that the RX and TX frequency of channels 0
through 22 are fixed and cannot be edited. Basically all that can be
edited are the non-frequency related settings.
The 2nd difference would be that channels 23 through 127 have TX
inhibited (basically like a scanner). There is no need to program
Duplex, Offset, Mode, Power, or any of the TX related tones.
Does anyone have any ideas for how someone could address one or the
other of these differences? Would it be possible to split these 2
ranges of channels into separate groups so they could be dealt with
separately (0-22 and 23-127)?
Thanks in advance...
Jim KC9HI
1
0
[chirp_devel] [PATCH][Kenwood Serie 60G] Widen the band limits for some radios, fixes #3813
by Pavel Milanes (CO7WT) 18 Jul '16
by Pavel Milanes (CO7WT) 18 Jul '16
18 Jul '16
The OEM software for this radios can program it out of it's default band
limits, some of the models has ranges of operations close but outside
the ham bands.
This patch widen the default band limits for this radios, allowing the
programming of these for hamm radio use, some of the new limits are
tested by me and others by Stephen GN5SWP, other are just guesses.
--
73 Pavel CO7WT.
1
0
Tested changes:
[Pavel Milanes (CO7WT) <pavelmc(a)gmail.com>] [PATCH][QYT-KT8900] Add a newvariant of this radios, fixes #3821
A new variant of this radios is on the wild, this adds the ID of it to mange it on Chirp.
73 Pavel CO7WT.
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 ba17605533ea0d2638e5b08750565de409e671c9
[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 ba17605533ea0d2638e5b08750565de409e671c9
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson5492101039323524699.sh
[workspace] $ /bin/sh -xe /tmp/hudson4789345109768653814.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.048s
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.584s
user 0m7.426s
sys 0m0.087s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-07-16 04:52:37,962] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 14.04.4 LTS (Python 2.7.6)
[2016-07-16 04:52:37,971] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-07-16 04:52:37,972] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-07-16 04:52:37,972] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-07-16 04:52:37,972] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-07-16 04:52:37,972] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-07-16 04:52:37,972] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-07-16 04:52:37,972] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-07-16 04:52:37,972] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-07-16 04:52:37,972] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-07-16 04:52:37,972] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-07-16 04:52:37,972] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-07-16 04:52:37,972] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-07-16 04:52:37,972] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-07-16 04:52:37,973] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-07-16 04:52:37,973] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-07-16 04:52:37,973] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-07-16 04:52:37,973] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-07-16 04:52:37,973] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-07-16 04:52:37,973] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-07-16 04:52:37,974] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-07-16 04:52:37,974] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-07-16 04:52:37,974] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-07-16 04:52:37,974] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-07-16 04:52:37,974] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-07-16 04:52:37,974] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-07-16 04:52:37,974] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-07-16 04:52:37,974] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-07-16 04:52:37,975] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-07-16 04:52:37,975] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-07-16 04:52:37,975] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-07-16 04:52:37,975] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-07-16 04:52:37,975] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-07-16 04:52:37,975] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-07-16 04:52:37,976] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-07-16 04:52:37,976] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-07-16 04:52:37,977] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-07-16 04:52:37,977] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-07-16 04:52:37,977] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-07-16 04:52:37,977] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-07-16 04:52:37,977] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-07-16 04:52:37,977] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-07-16 04:52:37,977] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-07-16 04:52:37,978] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-07-16 04:52:37,978] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-07-16 04:52:37,978] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-07-16 04:52:37,978] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-07-16 04:52:37,978] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-07-16 04:52:37,978] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-07-16 04:52:37,978] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-07-16 04:52:37,978] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-07-16 04:52:37,979] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-07-16 04:52:37,979] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-07-16 04:52:37,979] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-07-16 04:52:37,979] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-07-16 04:52:37,979] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-07-16 04:52:37,979] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-07-16 04:52:37,979] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-07-16 04:52:37,979] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-07-16 04:52:37,979] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-07-16 04:52:37,980] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-07-16 04:52:37,981] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-07-16 04:52:37,981] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-07-16 04:52:37,981] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-07-16 04:52:37,982] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-07-16 04:52:37,982] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-07-16 04:52:37,982] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-07-16 04:52:37,982] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-07-16 04:52:37,982] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-07-16 04:52:37,983] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-07-16 04:52:37,983] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-07-16 04:52:37,983] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-07-16 04:52:37,983] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-07-16 04:52:37,984] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-07-16 04:52:37,984] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-07-16 04:52:37,984] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-07-16 04:52:37,984] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-07-16 04:52:37,985] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-07-16 04:52:37,985] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-07-16 04:52:37,985] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-07-16 04:52:37,985] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-07-16 04:52:37,991] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-07-16 04:52:37,994] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-07-16 04:52:37,994] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-07-16 04:52:37,994] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-07-16 04:52:37,995] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-07-16 04:52:37,995] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-07-16 04:52:37,995] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-07-16 04:52:37,995] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-07-16 04:52:37,996] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-07-16 04:52:37,996] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-07-16 04:52:37,996] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-07-16 04:52:37,996] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-07-16 04:52:37,997] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-07-16 04:52:37,997] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-07-16 04:52:37,997] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-07-16 04:52:37,997] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-07-16 04:52:37,997] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-07-16 04:52:37,998] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-07-16 04:52:37,998] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-07-16 04:52:37,998] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-07-16 04:52:37,998] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-07-16 04:52:37,998] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-07-16 04:52:37,999] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-07-16 04:52:37,999] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-07-16 04:52:37,999] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-07-16 04:52:37,999] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-07-16 04:52:38,000] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-07-16 04:52:38,000] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-07-16 04:52:38,000] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-07-16 04:52:38,001] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-07-16 04:52:38,001] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-07-16 04:52:38,001] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-07-16 04:52:38,001] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-07-16 04:52:38,001] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-07-16 04:52:38,001] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-07-16 04:52:38,002] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-07-16 04:52:38,002] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-07-16 04:52:38,002] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-07-16 04:52:38,002] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-07-16 04:52:38,002] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-07-16 04:52:38,003] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-07-16 04:52:38,003] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-07-16 04:52:38,003] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-07-16 04:52:38,003] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-07-16 04:52:38,003] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-07-16 04:52:38,004] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-07-16 04:52:38,004] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-07-16 04:52:38,004] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-07-16 04:52:38,004] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-07-16 04:52:38,005] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-07-16 04:52:38,005] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-07-16 04:52:38,005] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-07-16 04:52:38,005] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-07-16 04:52:38,005] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-07-16 04:52:38,005] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-07-16 04:52:38,005] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-07-16 04:52:38,005] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-07-16 04:52:38,005] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-07-16 04:52:38,006] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-07-16 04:52:38,006] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-07-16 04:52:38,006] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-07-16 04:52:38,007] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-07-16 04:52:38,007] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-07-16 04:52:38,007] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-07-16 04:52:38,007] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-07-16 04:52:38,007] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-07-16 04:52:38,007] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-07-16 04:52:38,007] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-07-16 04:52:38,008] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-07-16 04:52:38,008] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-07-16 04:52:38,008] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-07-16 04:52:38,008] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-07-16 04:52:38,008] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-07-16 04:52:38,008] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-07-16 04:52:38,008] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-07-16 04:52:38,009] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-07-16 04:52:38,009] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-07-16 04:52:38,009] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2016-07-16 04:52:38,010] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-07-16 04:52:38,010] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-07-16 04:52:38,010] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-07-16 04:52:38,010] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-07-16 04:52:38,011] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-07-16 04:52:38,011] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-07-16 04:52:38,012] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-07-16 04:52:38,012] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-07-16 04:52:38,012] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-07-16 04:52:38,012] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
+ rm /tmp/Alinco_DJ175_Ns9Lsi.img /tmp/Alinco_DJ175_gAt3mN.img /tmp/Alinco_DJ596_0yVPnz.img /tmp/Alinco_DJ596_2BIz0c.img /tmp/Alinco_DR235T_L5HlVV.img /tmp/Alinco_DR235T_vHzXjn.img /tmp/AnyTone_OBLTR-8R_e4GuoH.img /tmp/AnyTone_OBLTR-8R_xbQy9p.img /tmp/AnyTone_TERMN-8R_GTxfaM.img /tmp/AnyTone_TERMN-8R_tsfsQg.img /tmp/BTECH_UV-2501+220_BHBfXI.img /tmp/BTECH_UV-2501+220_fjjwvf.img /tmp/BTECH_UV-5001_hb_ZRx.img /tmp/BTECH_UV-5001_ko2UpW.img /tmp/BTECH_UV-50X3_5p1AlB.img /tmp/BTECH_UV-50X3_B2k8Fg.img /tmp/BTECH_UV-50X3_Lp0enf.img /tmp/BTECH_UV-50X3_OAv00m.img /tmp/BTECH_UV-50X3_Z5m8vO.img /tmp/BTECH_UV-50X3_jK0rJO.img /tmp/Baofeng_BF-888_ToBQUK.img /tmp/Baofeng_BF-888_o0XjGW.img /tmp/Baofeng_F-11_YYeqe5.img /tmp/Baofeng_F-11_nCi53B.img /tmp/Baofeng_UV-3R_Fh92j5.img /tmp/Baofeng_UV-3R_Ix_6iv.img /tmp/Baofeng_UV-5R_7xiTZz.img /tmp/Baofeng_UV-5R_crVvZq.img /tmp/Baofeng_UV-B5_D_znQT.img /tmp/Baofeng_UV-B5_sF13AU.img /tmp/Baojie_BJ-9900_LNgNyG.img /tmp/Baojie_BJ-9900_RXcIV6.img /tmp/Baojie_BJ-9900__5XHza.img /tmp/Baojie_BJ-9900_hVp1UR.img /tmp/Baojie_BJ-9900_kcs7z1.img /tmp/Baojie_BJ-9900_xnVTug.img /tmp/Feidaxin_FD-268A_O3we3o.img /tmp/Feidaxin_FD-268A_Xv7mNg.img /tmp/Feidaxin_FD-268B_1B2yUz.img /tmp/Feidaxin_FD-268B_o_w3Tn.img /tmp/Feidaxin_FD-288B_fzERu4.img /tmp/Feidaxin_FD-288B_sC8osk.img /tmp/Icom_IC-208H_8tbJ0S.img /tmp/Icom_IC-208H_cpWmCe.img /tmp/Icom_IC-2100H_DwD645.img /tmp/Icom_IC-2100H_xxBImo.img /tmp/Icom_IC-2200H_4fIvMK.img /tmp/Icom_IC-2200H_hhzEhq.img /tmp/Icom_IC-2720H_4Y5up8.img /tmp/Icom_IC-2720H_lFVh3a.img /tmp/Icom_IC-2820H_AgkNRr.img /tmp/Icom_IC-2820H_d07GOh.img /tmp/Icom_IC-Q7A_FfGH1t.img /tmp/Icom_IC-Q7A_x36fCq.img /tmp/Icom_IC-T70_52eZuh.img /tmp/Icom_IC-T70_Ghjv3y.img /tmp/Icom_IC-T7H_hSBRSg.img /tmp/Icom_IC-T7H_zYC2mp.img /tmp/Icom_IC-T8A_RCeM1w.img /tmp/Icom_IC-T8A_cjR6Ur.img /tmp/Icom_IC-V82_U82_alzOj8.img /tmp/Icom_IC-V82_U82_yK_7_f.img /tmp/Icom_IC-W32A_2H9giz.img /tmp/Icom_IC-W32A_7OrBkZ.img /tmp/Icom_IC-W32A_LE8wOu.img /tmp/Icom_IC-W32A_e4zNBE.img /tmp/Icom_IC-W32A_qaS2ia.img /tmp/Icom_IC-W32A_zlMiJP.img /tmp/Icom_IC-W32E_MDSLB_.img /tmp/Icom_IC-W32E_SfmVpu.img /tmp/Icom_IC-W32E_VM8_a4.img /tmp/Icom_IC-W32E_hkNvgo.img /tmp/Icom_IC-W32E_noN3tf.img /tmp/Icom_IC-W32E_sGvKKc.img /tmp/Icom_ID-31A_dg6T8q.img /tmp/Icom_ID-31A_gB7rIU.img /tmp/Icom_ID-51 Plus_Aq72zR.img /tmp/Icom_ID-51 Plus_zmGwyo.img /tmp/Icom_ID-51_O3LkWQ.img /tmp/Icom_ID-51_Y_87Qd.img /tmp/Icom_ID-800H_0jFnUN.img /tmp/Icom_ID-800H_QSajtu.img /tmp/Icom_ID-880H_Xqgy2B.img /tmp/Icom_ID-880H_rHbPke.img /tmp/Jetstream_JT220M_BLRq_J.img /tmp/Jetstream_JT220M_Q0LGLh.img /tmp/Jetstream_JT270M_CIlZyM.img /tmp/Jetstream_JT270M_nzY_R9.img /tmp/KYD_IP-620_gNLIru.img /tmp/KYD_IP-620_wgdPQi.img /tmp/Kenwood_TH-D72 (clone mode)_eBJvb9.img /tmp/Kenwood_TH-D72 (clone mode)_vuoMFH.img /tmp/Kenwood_TK-272G_62Eyi0.img /tmp/Kenwood_TK-272G_Nzm7V4.img /tmp/Kenwood_TK-760G_8Z7tmn.img /tmp/Kenwood_TK-760G_HsAym3.img /tmp/Kenwood_TK-8102_E2aAoL.img /tmp/Kenwood_TK-8102_ryQWxe.img /tmp/Leixen_VV-898_11OzDb.img /tmp/Leixen_VV-898_B_cN2o.img /tmp/Polmar_DB-50M_2ZI2aL.img /tmp/Polmar_DB-50M_Cx4Qpr.img /tmp/Puxing_PX-2R_cleuuV.img /tmp/Puxing_PX-2R_zHtELn.img /tmp/Puxing_PX-777_DmqDxI.img /tmp/Puxing_PX-777_FdKKWA.img /tmp/TYT_TH-7800_J0TGgc.img /tmp/TYT_TH-7800__RwO_L.img /tmp/TYT_TH-9800_fXqXCA.img /tmp/TYT_TH-9800_mC_yLb.img /tmp/TYT_TH-UV3R-25_rRknOL.img /tmp/TYT_TH-UV3R-25_wWQyBg.img /tmp/TYT_TH-UV3R_7pmYzy.img /tmp/TYT_TH-UV3R_XRVYzR.img /tmp/TYT_TH-UVF1_ETH_WS.img /tmp/TYT_TH-UVF1_bHaV4r.img /tmp/TYT_TH9000_144_IckFTM.img /tmp/TYT_TH9000_144_dYqtVS.img /tmp/Vertex Standard_VXA-700_R0oqVm.img /tmp/Vertex Standard_VXA-700_dh4_HM.img /tmp/WACCOM_MINI-8900_RJJv_M.img /tmp/WACCOM_MINI-8900_iox8fN.img /tmp/Wouxun_KG-816_BXL_W5.img /tmp/Wouxun_KG-816_iocs7Z.img /tmp/Wouxun_KG-818_9ehdVt.img /tmp/Wouxun_KG-818_zmlUjg.img /tmp/Wouxun_KG-UV6_maVFzd.img /tmp/Wouxun_KG-UV6_rPFVtO.img /tmp/Wouxun_KG-UV8D_UTYkgk.img /tmp/Wouxun_KG-UV8D_gD6SHD.img /tmp/Wouxun_KG-UVD1P_Y0J7T2.img /tmp/Wouxun_KG-UVD1P_xcbsY4.img /tmp/Yaesu_FT-1802M_2ZidKx.img /tmp/Yaesu_FT-1802M_Xm4b38.img /tmp/Yaesu_FT-1D_BYV70M.img /tmp/Yaesu_FT-1D_tT0FyV.img /tmp/Yaesu_FT-2800M_qIxvym.img /tmp/Yaesu_FT-2800M_zCAEUz.img /tmp/Yaesu_FT-2900R_1900R_NVWZPq.img /tmp/Yaesu_FT-2900R_1900R_vlt8D2.img /tmp/Yaesu_FT-50_93aj_A.img /tmp/Yaesu_FT-50_X3ujJB.img /tmp/Yaesu_FT-60_580PIP.img /tmp/Yaesu_FT-60_Vc8nam.img /tmp/Yaesu_FT-7800_7900_Y7yhTn.img /tmp/Yaesu_FT-7800_7900_wIDawa.img /tmp/Yaesu_FT-817ND (US)_DNQSEM.img /tmp/Yaesu_FT-817ND (US)_xE81pL.img /tmp/Yaesu_FT-817ND_Ij0KYa.img /tmp/Yaesu_FT-817ND_zJQsHH.img /tmp/Yaesu_FT-817_8Fxxwf.img /tmp/Yaesu_FT-817_tK0GJ9.img /tmp/Yaesu_FT-857_897 (US)_XRl5jj.img /tmp/Yaesu_FT-857_897 (US)_cJuehv.img /tmp/Yaesu_FT-857_897_YpF1M3.img /tmp/Yaesu_FT-857_897_riS7Hv.img /tmp/Yaesu_FT-8800_97SQMG.img /tmp/Yaesu_FT-8800_AKkejK.img /tmp/Yaesu_FT-8800_Gbd2FG.img /tmp/Yaesu_FT-8800_JSObgk.img /tmp/Yaesu_FT-8800_ME5wJv.img /tmp/Yaesu_FT-8800_kEWpG9.img /tmp/Yaesu_FT-8900_VXVI7b.img /tmp/Yaesu_FT-8900_xMVkpK.img /tmp/Yaesu_FTM-350_DrI7fO.img /tmp/Yaesu_FTM-350_Grzu_8.img /tmp/Yaesu_FTM-350_iBsBqd.img /tmp/Yaesu_FTM-350_ovdjKo.img /tmp/Yaesu_FTM-350_uRp6GC.img /tmp/Yaesu_FTM-350_wLfcXQ.img /tmp/Yaesu_VX-2_CqgU45.img /tmp/Yaesu_VX-2_PlhBvp.img /tmp/Yaesu_VX-3_F9E_dv.img /tmp/Yaesu_VX-3_XH83fc.img /tmp/Yaesu_VX-5_3tVmfP.img /tmp/Yaesu_VX-5_ShZvcs.img /tmp/Yaesu_VX-6_rAtLqm.img /tmp/Yaesu_VX-6_zMD8in.img /tmp/Yaesu_VX-7_0IuGOe.img /tmp/Yaesu_VX-7_kYDatL.img /tmp/Yaesu_VX-8_58tVVK.img /tmp/Yaesu_VX-8_sFELwr.img
Email was triggered for: Success
Sending email for trigger: Success
1
0
[chirp_devel] [PATCH][QYT-KT8900] Add a newvariant of this radios, fixes #3821
by Pavel Milanes (CO7WT) 15 Jul '16
by Pavel Milanes (CO7WT) 15 Jul '16
15 Jul '16
A new variant of this radios is on the wild, this adds the ID of it to
mange it on Chirp.
73 Pavel CO7WT.
--
73 Pavel CO7WT.
1
0