<div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px"><div id="yui_3_16_0_1_1424701579536_3143" dir="ltr"><span id="yui_3_16_0_1_1424701579536_3189">I recall an unfinished discussion a while back where we were thinking that chirp should have proper logging support. One thought was to have a more complete logging subsystem, e.g., thru logger module. This would be more flexible in terms of supporting various levels</span>&nbsp;i.e., CRIT, WARN, INFO, DEBUG, as well as various outputs, e.g., logfile, console, etc.<br></div><div id="yui_3_16_0_1_1424701579536_3143" dir="ltr"><br></div><div id="yui_3_16_0_1_1424701579536_3143" dir="ltr">It does seem to be a rather large task, as you have begun undertaking.</div><div id="yui_3_16_0_1_1424701579536_3143" dir="ltr" class="" style=""><span id="yui_3_16_0_1_1424701579536_3188" class="" style="">Thanks for taking this on Zach. This looks like a great start.</span></div><br>  <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;" id="yui_3_16_0_1_1424701579536_3297"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;" id="yui_3_16_0_1_1424701579536_3296"> <div dir="ltr" id="yui_3_16_0_1_1424701579536_3295"> <hr size="1" id="yui_3_16_0_1_1424701579536_3294">  <font size="2" face="Arial" id="yui_3_16_0_1_1424701579536_3374"> <b><span style="font-weight:bold;">From:</span></b> Zach Welch &lt;zach@mandolincreekfarm.com&gt;<br> <b><span style="font-weight: bold;">To:</span></b> chirp_devel@intrepid.danplanet.com <br> <b><span style="font-weight: bold;">Sent:</span></b> Monday, February 23, 2015 1:09 AM<br> <b><span style="font-weight: bold;">Subject:</span></b> [chirp_devel] [PATCH 3/4] Simplify and centralize debugging        messages (#2343)<br> </font> </div> <div class="y_msg_container" id="yui_3_16_0_1_1424701579536_3373"><br>At its core, this patch adds a dprint function that wraps print with<br>a conditional on CHIRP_DEBUG.&nbsp; That variable is set by the environment,<br>but it can also be set by a command line option (--debug) in chirp.py.<br>I would like to add that option to chirpw too, but that would require a<br>separate patch that adds proper option parsing.<br><br>The remainder of the patch involves chasing down all references to<br>CHIRP_DEBUG, nearly all of which were wrapping plain print statements.<br>I also eliminated a few plain DEBUG variables and a couple of other<br>one-off variants.<br>---<br> chirp.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  |&nbsp; 8 ++++++++<br> chirp/__init__.py&nbsp; &nbsp; &nbsp; |&nbsp; 9 +++++++++<br> chirp/anytone.py&nbsp; &nbsp; &nbsp;  | 11 ++++-------<br> chirp/baofeng_uv3r.py&nbsp; |&nbsp; 5 -----<br> chirp/bjuv55.py&nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; 5 -----<br> chirp/ft1d.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 12 +++++-------<br> chirp/ft2800.py&nbsp; &nbsp; &nbsp; &nbsp; | 19 ++++++------------<br> chirp/ft60.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; 5 ++---<br> chirp/ft7800.py&nbsp; &nbsp; &nbsp; &nbsp; | 27 ++++++++------------------<br> chirp/ft817.py&nbsp; &nbsp; &nbsp; &nbsp;  | 28 +++++++++++----------------<br> chirp/ft857.py&nbsp; &nbsp; &nbsp; &nbsp;  |&nbsp; 7 +++----<br> chirp/ft90.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 52 +++++++++++++++++---------------------------------<br> chirp/ftm350.py&nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; 6 +++---<br> chirp/h777.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 17 ++++++-----------<br> chirp/icomciv.py&nbsp; &nbsp; &nbsp;  | 12 ++++--------<br> chirp/idrp.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 11 +++--------<br> chirp/kenwood_live.py&nbsp; |&nbsp; 8 ++------<br> chirp/kguv8d.py&nbsp; &nbsp; &nbsp; &nbsp; | 43 ++++++++++++++---------------------------<br> chirp/kyd.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  | 27 ++++++++++----------------<br> chirp/leixen.py&nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; 5 -----<br> chirp/puxing.py&nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; 5 -----<br> chirp/th9800.py&nbsp; &nbsp; &nbsp; &nbsp; | 35 ++++++++++++---------------------<br> chirp/th_uv3r.py&nbsp; &nbsp; &nbsp;  |&nbsp; 5 -----<br> chirp/thd72.py&nbsp; &nbsp; &nbsp; &nbsp;  | 10 +++-------<br> chirp/tk8102.py&nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; 7 +++----<br> chirp/tmv71_ll.py&nbsp; &nbsp; &nbsp; | 10 +++-------<br> chirp/uv5r.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 27 ++++++++------------------<br> chirp/vx170.py&nbsp; &nbsp; &nbsp; &nbsp;  |&nbsp; 5 -----<br> chirp/vx2.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  | 29 +++++++++-------------------<br> chirp/vx3.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  | 29 +++++++++-------------------<br> chirp/vx8.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  | 10 ++++------<br> chirp/wouxun.py&nbsp; &nbsp; &nbsp; &nbsp; | 12 +++++-------<br> chirp/wouxun_common.py |&nbsp; 8 +++-----<br> chirp/yaesu_clone.py&nbsp;  | 11 ++++-------<br> chirpui/reporting.py&nbsp;  | 29 ++++++++++++----------------<br> 35 files changed, 191 insertions(+), 358 deletions(-)<br><br>diff --git a/chirp.py b/chirp.py<br>index 28ed8f9..20c7f55 100755<br>--- a/chirp.py<br>+++ b/chirp.py<br>@@ -21,6 +21,7 @@ import sys<br> from optparse import OptionParser<br> import optparse<br> <br>+import chirp;<br> from chirp import *<br> from chirp import chirp_common, errors, idrp, directory, util<br> from chirp import print_chirp_version<br>@@ -160,11 +161,18 @@ if __name__ == "__main__":<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; action="store_true",<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; default=False,<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; help="Upload memory map to radio")<br>+&nbsp; &nbsp; &nbsp; &nbsp; parser.add_option("-d", "--debug", dest="debug",<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; action="store_true",<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; default=False,<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; help="Print debugging messages")<br> &nbsp;&nbsp;&nbsp; if len(sys.argv) &lt;= 1:<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; parser.print_help()<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sys.exit(0)<br> &nbsp;&nbsp;&nbsp; (options, args) = parser.parse_args()<br> <br>+&nbsp;&nbsp;&nbsp; if options.debug:<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; chirp.CHIRP_DEBUG = True<br>+<br>&nbsp; &nbsp; &nbsp; &nbsp;  if options.list_radios:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  print "Supported Radios:\n\t", "\n\t".join(sorted(RADIOS.keys()))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  sys.exit(0);<br>diff --git a/chirp/__init__.py b/chirp/__init__.py<br>index e5118d1..a706e56 100644<br>--- a/chirp/__init__.py<br>+++ b/chirp/__init__.py<br>@@ -32,3 +32,12 @@ def print_chirp_version():<br> &nbsp;&nbsp;&nbsp; print "CHIRP %s on %s (Python %s)" % (CHIRP_VERSION,<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; platform.get_platform().os_version_string(),<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; sys.version.split()[0])<br>+<br>+# For early debug (before option parsing), set CHIRP_DEBUG in environment;<br>+# otherwise, use --debug option to enable debugging messages.<br>+CHIRP_DEBUG = os.getenv("CHIRP_DEBUG") and True or False<br>+<br>+def dprint(*args):<br>+&nbsp;&nbsp;&nbsp; """Print a debug message if CHIRP_DEBUG is True)"""<br>+&nbsp;&nbsp;&nbsp; if CHIRP_DEBUG:<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; print "".join(map(str,args))<br>diff --git a/chirp/anytone.py b/chirp/anytone.py<br>index 4b9c785..93aea5a 100644<br>--- a/chirp/anytone.py<br>+++ b/chirp/anytone.py<br>@@ -17,6 +17,7 @@ import os<br> import struct<br> import time<br> <br>+from chirp import dprint<br> from chirp import bitwise<br> from chirp import chirp_common<br> from chirp import directory<br>@@ -164,10 +165,6 @@ def _should_send_addr(memobj, addr):<br>&nbsp; &nbsp;  else:<br>&nbsp; &nbsp; &nbsp; &nbsp;  return _is_loc_used(memobj, _addr_to_loc(addr))<br> <br>-def _debug(string):<br>-&nbsp; &nbsp; if "CHIRP_DEBUG" in os.environ or True:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print string<br>-<br> def _echo_write(radio, data):<br>&nbsp; &nbsp;  try:<br>&nbsp; &nbsp; &nbsp; &nbsp;  radio.pipe.write(data)<br>@@ -201,7 +198,7 @@ def _ident(radio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  raise errors.RadioError("Unsupported model")<br>&nbsp; &nbsp;  _echo_write(radio, "\x02")<br>&nbsp; &nbsp;  response = radio.pipe.read(16)<br>-&nbsp; &nbsp; _debug(util.hexprint(response))<br>+&nbsp; &nbsp; dprint(util.hexprint(response))<br>&nbsp; &nbsp;  if response[1:8] not in valid_model:<br>&nbsp; &nbsp; &nbsp; &nbsp;  print "Response was:\n%s" % util.hexprint(response)<br>&nbsp; &nbsp; &nbsp; &nbsp;  raise errors.RadioError("Unsupported model")<br>@@ -227,7 +224,7 @@ def _send(radio, cmd, addr, length, data=None):<br>&nbsp; &nbsp; &nbsp; &nbsp;  frame += chr(_checksum(frame[1:]))<br>&nbsp; &nbsp; &nbsp; &nbsp;  frame += "\x06"<br>&nbsp; &nbsp;  _echo_write(radio, frame)<br>-&nbsp; &nbsp; _debug("Sent:\n%s" % util.hexprint(frame))<br>+&nbsp; &nbsp; dprint("Sent:\n%s" % util.hexprint(frame))<br>&nbsp; &nbsp;  if data:<br>&nbsp; &nbsp; &nbsp; &nbsp;  result = radio.pipe.read(1)<br>&nbsp; &nbsp; &nbsp; &nbsp;  if result != "\x06":<br>@@ -236,7 +233,7 @@ def _send(radio, cmd, addr, length, data=None):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  addr)<br>&nbsp; &nbsp; &nbsp; &nbsp;  return<br>&nbsp; &nbsp;  result = _read(radio, length + 6)<br>-&nbsp; &nbsp; _debug("Got:\n%s" % util.hexprint(result))<br>+&nbsp; &nbsp; dprint("Got:\n%s" % util.hexprint(result))<br>&nbsp; &nbsp;  header = result[0:4]<br>&nbsp; &nbsp;  data = result[4:-2]<br>&nbsp; &nbsp;  ack = result[-1]<br>diff --git a/chirp/baofeng_uv3r.py b/chirp/baofeng_uv3r.py<br>index 52d1a78..0827885 100644<br>--- a/chirp/baofeng_uv3r.py<br>+++ b/chirp/baofeng_uv3r.py<br>@@ -24,11 +24,6 @@ from chirp.settings import RadioSetting, RadioSettingGroup, \<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  RadioSettingValueInteger, RadioSettingValueString, \<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  RadioSettingValueFloat, RadioSettings<br> <br>-if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; DEBUG = True<br>-else:<br>-&nbsp; &nbsp; DEBUG = False<br>-<br> def _uv3r_prep(radio):<br>&nbsp; &nbsp;  radio.pipe.write("\x05PROGRAM")<br>&nbsp; &nbsp;  ack = radio.pipe.read(1)<br>diff --git a/chirp/bjuv55.py b/chirp/bjuv55.py<br>index 7dd61be..9fb7e5a 100644<br>--- a/chirp/bjuv55.py<br>+++ b/chirp/bjuv55.py<br>@@ -28,11 +28,6 @@ from chirp.settings import RadioSetting, RadioSettingGroup, \<br> from textwrap import dedent<br> from chirp import uv5r<br> <br>-if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; CHIRP_DEBUG = True<br>-else:<br>-&nbsp; &nbsp; CHIRP_DEBUG = False<br>-<br> BJUV55_MODEL&nbsp;  = "\x50\xBB\xDD\x55\x63\x98\x4D"<br> <br> COLOR_LIST = ["Off", "Blue", "Red", "Pink"]<br>diff --git a/chirp/ft1d.py b/chirp/ft1d.py<br>index eb7a0b1..39472df 100644<br>--- a/chirp/ft1d.py<br>+++ b/chirp/ft1d.py<br>@@ -19,7 +19,7 @@ import re<br> import string<br> <br> from chirp import chirp_common, yaesu_clone, directory<br>-from chirp import bitwise<br>+from chirp import bitwise, dprint<br> from chirp.settings import RadioSettingGroup, RadioSetting, RadioSettings<br> from chirp.settings import RadioSettingValueInteger, RadioSettingValueString<br> from chirp.settings import RadioSettingValueList, RadioSettingValueBoolean<br>@@ -1549,8 +1549,7 @@ class FT1Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  is_latitude = name.endswith("latitude")<br>&nbsp; &nbsp; &nbsp; &nbsp;  lat_long = setting.value.get_value().strip()<br>&nbsp; &nbsp; &nbsp; &nbsp;  sign, l_d, l_m, l_s = cls._str_to_latlong(lat_long, is_latitude)<br>-&nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "%s: %d %d %d %d" % (name, sign, l_d, l_m, l_s)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("%s: %d %d %d %d" % (name, sign, l_d, l_m, l_s))<br>&nbsp; &nbsp; &nbsp; &nbsp;  setattr(obj, "%s_sign" % name, sign)<br>&nbsp; &nbsp; &nbsp; &nbsp;  setattr(obj, "%s_degree" % name, l_d)<br>&nbsp; &nbsp; &nbsp; &nbsp;  setattr(obj, "%s_minute" % name, l_m)<br>@@ -1587,9 +1586,8 @@ class FT1Radio(yaesu_clone.YaesuCloneModeRadio):<br> <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  try:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  old_val = getattr(obj, setting)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Setting %s(%r) &lt;= %s" % (<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; element.get_name(), old_val, element.value)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Setting %s(%r) &lt;= %s" % (<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; element.get_name(), old_val, element.value))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  setattr(obj, setting, element.value)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  except AttributeError as e:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  print "Setting %s is not in the memory map: %s" % (<br>@@ -1623,4 +1621,4 @@ class FT1Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  val = [FT1_DTMF_CHARS.index(x) for x in rawval]<br>&nbsp; &nbsp; &nbsp; &nbsp;  for x in range(len(val), 16):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  val.append(0xFF)<br>-&nbsp; &nbsp; &nbsp; &nbsp; cls._memobj.dtmf[i].memory = val<br>\ No newline at end of file<br>+&nbsp; &nbsp; &nbsp; &nbsp; cls._memobj.dtmf[i].memory = val<br>diff --git a/chirp/ft2800.py b/chirp/ft2800.py<br>index fb9d10c..645a240 100644<br>--- a/chirp/ft2800.py<br>+++ b/chirp/ft2800.py<br>@@ -16,11 +16,9 @@<br> import time<br> import os<br> <br>-from chirp import util, memmap, chirp_common, bitwise, directory, errors<br>+from chirp import util, memmap, chirp_common, bitwise, directory, errors, dprint<br> from chirp.yaesu_clone import YaesuCloneModeRadio<br> <br>-DEBUG = os.getenv("CHIRP_DEBUG") and True or False<br>-<br> CHUNK_SIZE = 16<br> def _send(s, data):<br>&nbsp; &nbsp;  for i in range(0, len(data), CHUNK_SIZE):<br>@@ -41,8 +39,7 @@ def _download(radio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  if data == IDBLOCK:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  break<br> <br>-&nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print "Header:\n%s" % util.hexprint(data)<br>+&nbsp; &nbsp; dprint("Header:\n%s" % util.hexprint(data))<br> <br>&nbsp; &nbsp;  if len(data) != 8:<br>&nbsp; &nbsp; &nbsp; &nbsp;  raise Exception("Failed to read header")<br>@@ -54,8 +51,7 @@ def _download(radio):<br>&nbsp; &nbsp;  while len(data) &lt; radio._block_sizes[1]:<br>&nbsp; &nbsp; &nbsp; &nbsp;  time.sleep(0.1)<br>&nbsp; &nbsp; &nbsp; &nbsp;  chunk = radio.pipe.read(38)<br>-&nbsp; &nbsp; &nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Got: %i:\n%s" % (len(chunk), util.hexprint(chunk))<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Got: %i:\n%s" % (len(chunk), util.hexprint(chunk)))<br>&nbsp; &nbsp; &nbsp; &nbsp;  if len(chunk) == 8:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  print "END?"<br>&nbsp; &nbsp; &nbsp; &nbsp;  elif len(chunk) != 38:<br>@@ -79,8 +75,7 @@ def _download(radio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  status.msg = "Cloning from radio"<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  radio.status_fn(status)<br> <br>-&nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print "Total: %i" % len(data)<br>+&nbsp; &nbsp; dprint("Total: %i" % len(data))<br> <br>&nbsp; &nbsp;  return memmap.MemoryMap(data)<br> <br>@@ -94,8 +89,7 @@ def _upload(radio):<br>&nbsp; &nbsp;  _send(radio.pipe, IDBLOCK)<br>&nbsp; &nbsp;  time.sleep(1)<br>&nbsp; &nbsp;  ack = radio.pipe.read(300)<br>-&nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print "Ack was (%i):\n%s" % (len(ack), util.hexprint(ack))<br>+&nbsp; &nbsp; dprint("Ack was (%i):\n%s" % (len(ack), util.hexprint(ack)))<br>&nbsp; &nbsp;  if ack != ACK:<br>&nbsp; &nbsp; &nbsp; &nbsp;  raise Exception("Radio did not ack ID")<br> <br>@@ -108,8 +102,7 @@ def _upload(radio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  cs += ord(byte)<br>&nbsp; &nbsp; &nbsp; &nbsp;  data += chr(cs &amp; 0xFF)<br> <br>-&nbsp; &nbsp; &nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Writing block %i:\n%s" % (block, util.hexprint(data))<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Writing block %i:\n%s" % (block, util.hexprint(data)))<br> <br>&nbsp; &nbsp; &nbsp; &nbsp;  _send(radio.pipe, data)<br>&nbsp; &nbsp; &nbsp; &nbsp;  time.sleep(0.1)<br>diff --git a/chirp/ft60.py b/chirp/ft60.py<br>index 45c92d0..d8cc428 100644<br>--- a/chirp/ft60.py<br>+++ b/chirp/ft60.py<br>@@ -15,7 +15,7 @@<br> <br> import time, os<br> from chirp import chirp_common, yaesu_clone, memmap, bitwise, directory<br>-from chirp import errors<br>+from chirp import errors, dprint<br> from chirp.settings import RadioSetting, RadioSettingGroup, \<br>&nbsp; &nbsp;  RadioSettingValueInteger, RadioSettingValueList, \<br>&nbsp; &nbsp;  RadioSettingValueBoolean, RadioSettingValueString, \<br>@@ -617,8 +617,7 @@ class FT60Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  obj = getattr(_settings, name)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  setattr(_settings, name, value)<br> <br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Setting %s: %s" % (name, value)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Setting %s: %s" % (name, value))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  except Exception, e:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  print element.get_name()<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  raise<br>diff --git a/chirp/ft7800.py b/chirp/ft7800.py<br>index 451fb08..7a48066 100644<br>--- a/chirp/ft7800.py<br>+++ b/chirp/ft7800.py<br>@@ -15,7 +15,7 @@<br> <br> import time<br> from chirp import chirp_common, yaesu_clone, memmap, directory<br>-from chirp import bitwise, errors<br>+from chirp import bitwise, errors, dprint<br> from textwrap import dedent<br> from chirp.settings import RadioSetting, RadioSettingGroup, \<br>&nbsp; &nbsp;  RadioSettingValueInteger, RadioSettingValueList, \<br>@@ -25,11 +25,6 @@ import os, re<br> <br> from collections import defaultdict<br> <br>-if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; CHIRP_DEBUG = True<br>-else:<br>-&nbsp; &nbsp; CHIRP_DEBUG = False<br>-<br> ACK = chr(0x06)<br> <br> MEM_FORMAT = """<br>@@ -540,9 +535,8 @@ class FT7800Radio(FTx800Radio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  FTx800Radio.set_memory(self, memory)<br> <br>&nbsp; &nbsp;  def _decode_chars(self, inarr):<br>-&nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "@_decode_chars, type: %s" % type(inarr)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print inarr<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("@_decode_chars, type: %s" % type(inarr))<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint(inarr)<br>&nbsp; &nbsp; &nbsp; &nbsp;  outstr = ""<br>&nbsp; &nbsp; &nbsp; &nbsp;  for i in inarr:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if i == 0xFF:<br>@@ -551,9 +545,8 @@ class FT7800Radio(FTx800Radio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  return outstr.rstrip()<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  <br>&nbsp; &nbsp;  def _encode_chars(self, instr, length = 16):<br>-&nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "@_encode_chars, type: %s" % type(instr)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print instr<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("@_encode_chars, type: %s" % type(instr))<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint(instr)<br>&nbsp; &nbsp; &nbsp; &nbsp;  outarr = []<br>&nbsp; &nbsp; &nbsp; &nbsp;  instr = str(instr)<br>&nbsp; &nbsp; &nbsp; &nbsp;  for i in range(length):<br>@@ -647,8 +640,7 @@ class FT7800Radio(FTx800Radio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  break<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if c &lt; len(DTMFCHARSET):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  dtmfstr += DTMFCHARSET[c]<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print dtmfstr<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint(dtmfstr)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  dtmfentry = RadioSettingValueString(0, 16, dtmfstr)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  dtmfentry.set_charset(DTMFCHARSET + list(" "))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  rs = RadioSetting(name, name.upper(), dtmfentry)<br>@@ -721,8 +713,7 @@ class FT7800Radio(FTx800Radio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  newval.append(DTMFCHARSET.index(dtmfstr[i]))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  else:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  newval.append(0xFF)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print newval<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint(newval)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  idx = int(setting[-2:])<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  _settings = self._memobj.dtmf[idx]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  _settings.memory = newval<br>@@ -735,9 +726,7 @@ class FT7800Radio(FTx800Radio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  # normal settings<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  newval = element.value<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  oldval = getattr(_settings, setting)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Setting %s(%s) &lt;= %s" % (setting,<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; oldval, newval)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Setting %s(%s) &lt;= %s" % (setting, oldval, newval))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  setattr(_settings, setting, newval)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  except Exception, e:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  print element.get_name()<br>diff --git a/chirp/ft817.py b/chirp/ft817.py<br>index 8950f73..de98c31 100644<br>--- a/chirp/ft817.py<br>+++ b/chirp/ft817.py<br>@@ -17,7 +17,7 @@<br> """FT817 - FT817ND - FT817ND/US management module"""<br> <br> from chirp import chirp_common, yaesu_clone, util, memmap, errors, directory<br>-from chirp import bitwise<br>+from chirp import bitwise, dprint<br> from chirp.settings import RadioSetting, RadioSettingGroup, \<br>&nbsp; &nbsp;  RadioSettingValueInteger, RadioSettingValueList, \<br>&nbsp; &nbsp;  RadioSettingValueBoolean, RadioSettingValueString, \<br>@@ -319,8 +319,7 @@ class FT817Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  raise Exception("Unable to read block %02X expected %i got %i" %<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  (blocknum, block + 2, len(data)))<br> <br>-&nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Read %i" % len(data)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Read %i" % len(data))<br>&nbsp; &nbsp; &nbsp; &nbsp;  return data<br> <br>&nbsp; &nbsp;  def _clone_in(self):<br>@@ -382,15 +381,12 @@ class FT817Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  for _i in range(0, repeat):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  time.sleep(0.01)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  checksum = yaesu_clone.YaesuChecksum(pos, pos + block - 1)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Block %i - will send from %i to %i byte " % \<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (blocks,<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  pos,<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  pos + block)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print util.hexprint(chr(blocks))<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print util.hexprint(self.get_mmap()[pos:pos + block])<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print util.hexprint(chr(checksum.get_calculated(<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.get_mmap())))<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Block %i - will send from %i to %i byte " % \<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (blocks, pos, pos + block))<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint(util.hexprint(chr(blocks)))<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint(util.hexprint(self.get_mmap()[pos:pos + block]))<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint(util.hexprint(chr(checksum.get_calculated(<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.get_mmap()))))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  self.pipe.write(chr(blocks))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  self.pipe.write(self.get_mmap()[pos:pos + block])<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  self.pipe.write(chr(checksum.get_calculated(self.get_mmap())))<br>@@ -399,8 +395,7 @@ class FT817Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  time.sleep(delay)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  buf = self.pipe.read(1)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if not buf or buf[0] != chr(CMD_ACK):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print util.hexprint(buf)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint(util.hexprint(buf))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  raise Exception(_("Radio did not ack block %i") % blocks)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  pos += block<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  blocks += 1<br>@@ -1030,9 +1025,8 @@ class FT817Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  else:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  obj = _settings<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  setting = element.get_name()<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Setting %s(%s) &lt;= %s" % (setting,<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getattr(obj, setting), element.value)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Setting %s(%s) &lt;= %s" % (setting,<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getattr(obj, setting), element.value))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if setting == "contrast":<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  setattr(obj, setting, int(element.value) + 1)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  elif setting == "callsign":<br>diff --git a/chirp/ft857.py b/chirp/ft857.py<br>index a479623..cccaa44 100644<br>--- a/chirp/ft857.py<br>+++ b/chirp/ft857.py<br>@@ -16,7 +16,7 @@<br> <br> """FT857 - FT857/US management module"""<br> <br>-from chirp import ft817, chirp_common, errors, directory<br>+from chirp import ft817, chirp_common, errors, directory, dprint<br> from chirp.settings import RadioSetting, RadioSettingGroup, \<br>&nbsp; &nbsp;  RadioSettingValueInteger, RadioSettingValueList, \<br>&nbsp; &nbsp;  RadioSettingValueBoolean, RadioSettingValueString, \<br>@@ -956,9 +956,8 @@ class FT857Radio(ft817.FT817Radio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  else:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  obj = _settings<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  setting = element.get_name()<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Setting %s(%s) &lt;= %s" % (setting,<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getattr(obj, setting), element.value)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Setting %s(%s) &lt;= %s" % (setting,<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getattr(obj, setting), element.value))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if setting == "arts_idw":<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  self._memobj.arts_idw = \<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  [self._CALLSIGN_CHARSET_REV[x] for x in<br>diff --git a/chirp/ft90.py b/chirp/ft90.py<br>index bfbddda..4060756 100644<br>--- a/chirp/ft90.py<br>+++ b/chirp/ft90.py<br>@@ -15,6 +15,7 @@<br> # along with this program.&nbsp; If not, see &lt;<a href="http://www.gnu.org/licenses/" target="_blank">http://www.gnu.org/licenses/</a>&gt;.<br> <br> from chirp import chirp_common, bitwise, memmap, directory, errors, util, yaesu_clone<br>+from chirp import dprint<br> from chirp.settings import RadioSetting, RadioSettingGroup, \<br>&nbsp; &nbsp;  RadioSettingValueInteger, RadioSettingValueList, \<br>&nbsp; &nbsp;  RadioSettingValueBoolean, RadioSettingValueString, \<br>@@ -22,11 +23,6 @@ from chirp.settings import RadioSetting, RadioSettingGroup, \<br> import time, os, traceback, string, re<br> from textwrap import dedent<br> <br>-if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; CHIRP_DEBUG = True<br>-else:<br>-&nbsp; &nbsp; CHIRP_DEBUG=False<br>-<br> CMD_ACK = chr(0x06)<br> <br> FT90_STEPS = [5.0, 10.0, 12.5, 15.0, 20.0, 25.0, 50.0]<br>@@ -289,27 +285,24 @@ class FT90Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  blocknumbyte = chr(blocknum)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  payloadbytes = self.get_mmap()[pos:pos+blocksize]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  checksumbyte = chr(checksum.get_calculated(self.get_mmap()))<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Block %i - will send from %i to %i byte " % \<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (blocknum, pos, pos + blocksize)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print util.hexprint(blocknumbyte)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print util.hexprint(payloadbytes)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print util.hexprint(checksumbyte)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Block %i - will send from %i to %i byte " % \<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (blocknum, pos, pos + blocksize))<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint(util.hexprint(blocknumbyte))<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint(util.hexprint(payloadbytes))<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint(util.hexprint(checksumbyte))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  # send wrapped bytes<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  time.sleep(looppredelay)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  self.pipe.write(blocknumbyte)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  self.pipe.write(payloadbytes)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  self.pipe.write(checksumbyte)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  tmp = self.pipe.read(blocksize+2)&nbsp; #chew echo<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "bytes echoed: "<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print util.hexprint(tmp)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("bytes echoed: ")<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint(util.hexprint(tmp))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  # radio is slow to write/ack:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  time.sleep(looppostdelay) <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  buf = self.pipe.read(1)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "ack recd:"<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print util.hexprint(buf)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("ack recd:")<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint(util.hexprint(buf))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if buf != CMD_ACK:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  raise Exception("Radio did not ack block %i" % blocknum)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  pos += blocksize<br>@@ -463,12 +456,10 @@ class FT90Radio(yaesu_clone.YaesuCloneModeRadio):<br> <br>&nbsp; &nbsp;  def _decode_cwid(self, cwidarr):<br>&nbsp; &nbsp; &nbsp; &nbsp;  cwid = ""<br>-&nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "@ +_decode_cwid:"<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("@ +_decode_cwid:")<br>&nbsp; &nbsp; &nbsp; &nbsp;  for byte in cwidarr.get_value():<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  char = int(byte)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print char<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint(char)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  # bitwise wraps in quotes! get rid of those<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if char &lt; len(FT90_CWID_CHARS):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  cwid += FT90_CWID_CHARS[char]<br>@@ -476,21 +467,17 @@ class FT90Radio(yaesu_clone.YaesuCloneModeRadio):<br> <br>&nbsp; &nbsp;  def _encode_cwid(self, cwidarr):<br>&nbsp; &nbsp; &nbsp; &nbsp;  cwid = ""<br>-&nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "@ _encode_cwid:"<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("@ _encode_cwid:")<br>&nbsp; &nbsp; &nbsp; &nbsp;  for char in cwidarr.get_value():<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  cwid += chr(FT90_CWID_CHARS.index(char))<br>-&nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print cwid<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint(cwid)<br>&nbsp; &nbsp; &nbsp; &nbsp;  return cwid<br>&nbsp; &nbsp;  <br>&nbsp; &nbsp;  def _bbcd2dtmf(self, bcdarr, strlen = 16):<br>&nbsp; &nbsp; &nbsp; &nbsp;  # doing bbcd, but with support for ABCD*#<br>-&nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print bcdarr.get_value()<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint(bcdarr.get_value())<br>&nbsp; &nbsp; &nbsp; &nbsp;  string = ''.join("%02X" % b for b in bcdarr)<br>-&nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "@_bbcd2dtmf, received: %s" % string<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("@_bbcd2dtmf, received: %s" % string)<br>&nbsp; &nbsp; &nbsp; &nbsp;  string = string.replace('E','*').replace('F','#')<br>&nbsp; &nbsp; &nbsp; &nbsp;  if strlen &lt;= 16:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  string = string[:strlen]<br>@@ -501,8 +488,7 @@ class FT90Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  dtmfstr = dtmfstr.replace('*', 'E').replace('#', 'F')<br>&nbsp; &nbsp; &nbsp; &nbsp;  dtmfstr = str.ljust(dtmfstr.strip(), 16, "0" )<br>&nbsp; &nbsp; &nbsp; &nbsp;  bcdarr = list(bytearray.fromhex(dtmfstr))<br>-&nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "@_dtmf2bbcd, sending: %s" % bcdarr<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("@_dtmf2bbcd, sending: %s" % bcdarr)<br>&nbsp; &nbsp; &nbsp; &nbsp;  return bcdarr<br>&nbsp; &nbsp;  <br>&nbsp; &nbsp;  def get_settings(self):<br>@@ -644,9 +630,7 @@ class FT90Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  dtmfstrlen = len(str(newval).strip())<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  setattr(_settings, setting + "_len", dtmfstrlen)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  newval = self._dtmf2bbcd(newval)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Setting %s(%s) &lt;= %s" % (setting,<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; oldval, newval)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Setting %s(%s) &lt;= %s" % (setting, oldval, newval))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  setattr(_settings, setting, newval)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  except Exception, e:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  print element.get_name()<br>diff --git a/chirp/ftm350.py b/chirp/ftm350.py<br>index 442cde1..4b823bc 100644<br>--- a/chirp/ftm350.py<br>+++ b/chirp/ftm350.py<br>@@ -18,7 +18,7 @@ import struct<br> import os<br> <br> from chirp import chirp_common, yaesu_clone, directory, errors, util<br>-from chirp import bitwise, memmap<br>+from chirp import bitwise, memmap, dprint<br> from chirp.settings import RadioSettingGroup, RadioSetting, RadioSettings<br> from chirp.settings import RadioSettingValueInteger, RadioSettingValueString<br> <br>@@ -141,8 +141,8 @@ def _clone_in(radio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  radio.pipe.write("\x06")<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  time.sleep(0.05)<br> <br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG") and (last_addr + 128) != addr:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Gap, expecting %04x, got %04x" % (last_addr+128, addr)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (last_addr + 128) != addr:<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Gap, expecting %04x, got %04x" % (last_addr+128, addr))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  last_addr = addr<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  data[addr] = block<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  length += len(block)<br>diff --git a/chirp/h777.py b/chirp/h777.py<br>index bce4b98..f37d193 100644<br>--- a/chirp/h777.py<br>+++ b/chirp/h777.py<br>@@ -20,13 +20,11 @@ import struct<br> import unittest<br> <br> from chirp import chirp_common, directory, memmap<br>-from chirp import bitwise, errors, util<br>+from chirp import bitwise, errors, util, dprint<br> from chirp.settings import RadioSetting, RadioSettingGroup, \<br>&nbsp; &nbsp;  RadioSettingValueInteger, RadioSettingValueList, \<br>&nbsp; &nbsp;  RadioSettingValueBoolean, RadioSettings<br> <br>-DEBUG = os.getenv("CHIRP_DEBUG") and True or False<br>-<br> MEM_FORMAT = """<br> #seekto 0x0010;<br> struct {<br>@@ -139,8 +137,7 @@ def _h777_read_block(radio, block_addr, block_size):<br> <br>&nbsp; &nbsp;  cmd = struct.pack("&gt;cHb", 'R', block_addr, BLOCK_SIZE)<br>&nbsp; &nbsp;  expectedresponse = "W" + cmd[1:]<br>-&nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print("Reading block %04x..." % (block_addr))<br>+&nbsp; &nbsp; dprint("Reading block %04x..." % (block_addr))<br> <br>&nbsp; &nbsp;  try:<br>&nbsp; &nbsp; &nbsp; &nbsp;  serial.write(cmd)<br>@@ -166,9 +163,8 @@ def _h777_write_block(radio, block_addr, block_size):<br>&nbsp; &nbsp;  cmd = struct.pack("&gt;cHb", 'W', block_addr, BLOCK_SIZE)<br>&nbsp; &nbsp;  data = radio.get_mmap()[block_addr:block_addr + 8]<br> <br>-&nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print("Writing Data:")<br>-&nbsp; &nbsp; &nbsp; &nbsp; print util.hexprint(cmd + data)<br>+&nbsp; &nbsp; dprint("Writing Data:")<br>+&nbsp; &nbsp; dprint(util.hexprint(cmd + data))<br> <br>&nbsp; &nbsp;  try:<br>&nbsp; &nbsp; &nbsp; &nbsp;  serial.write(cmd + data)<br>@@ -197,9 +193,8 @@ def do_download(radio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  block = _h777_read_block(radio, addr, BLOCK_SIZE)<br>&nbsp; &nbsp; &nbsp; &nbsp;  data += block<br> <br>-&nbsp; &nbsp; &nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Address: %04x" % addr<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print util.hexprint(block)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Address: %04x" % addr)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint(util.hexprint(block))<br> <br>&nbsp; &nbsp;  _h777_exit_programming_mode(radio)<br> <br>diff --git a/chirp/icomciv.py b/chirp/icomciv.py<br>index 71af300..54f2b57 100644<br>--- a/chirp/icomciv.py<br>+++ b/chirp/icomciv.py<br>@@ -1,10 +1,8 @@<br> <br> import struct<br>-from chirp import chirp_common, icf, util, errors, bitwise, directory<br>+from chirp import chirp_common, icf, util, errors, bitwise, directory, dprint<br> from chirp.memmap import MemoryMap<br> <br>-DEBUG = True<br>-<br> MEM_FORMAT = """<br> bbcd number[2];<br> u8&nbsp;  unknown1;<br>@@ -80,9 +78,8 @@ class Frame:<br>&nbsp; &nbsp; &nbsp; &nbsp;  raw = struct.pack("BBBBBB", 0xFE, 0xFE, src, dst, self._cmd, self._sub)<br>&nbsp; &nbsp; &nbsp; &nbsp;  raw += str(self._data) + chr(0xFD)<br> <br>-&nbsp; &nbsp; &nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "%02x -&gt; %02x (%i):\n%s" % (src, dst,<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; len(raw), util.hexprint(raw))<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("%02x -&gt; %02x (%i):\n%s" % (src, dst,<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; len(raw), util.hexprint(raw)))<br> <br>&nbsp; &nbsp; &nbsp; &nbsp;  serial.write(raw)<br>&nbsp; &nbsp; &nbsp; &nbsp;  if willecho:<br>@@ -106,8 +103,7 @@ class Frame:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  raise errors.RadioError("Radio reported error")<br> <br>&nbsp; &nbsp; &nbsp; &nbsp;  src, dst = struct.unpack("BB", data[2:4])<br>-&nbsp; &nbsp; &nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "%02x &lt;- %02x:\n%s" % (src, dst, util.hexprint(data))<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("%02x &lt;- %02x:\n%s" % (src, dst, util.hexprint(data)))<br> <br>&nbsp; &nbsp; &nbsp; &nbsp;  self._cmd = ord(data[4])<br>&nbsp; &nbsp; &nbsp; &nbsp;  self._sub = ord(data[5])<br>diff --git a/chirp/idrp.py b/chirp/idrp.py<br>index e20ba07..8a08e00 100644<br>--- a/chirp/idrp.py<br>+++ b/chirp/idrp.py<br>@@ -15,10 +15,7 @@<br> <br> import serial<br> <br>-from chirp import chirp_common, errors<br>-from chirp import util<br>-<br>-DEBUG_IDRP = False<br>+from chirp import chirp_common, errors, util, dprint<br> <br> def parse_frames(buf):<br>&nbsp; &nbsp;  """Parse frames from the radio"""<br>@@ -49,8 +46,7 @@ def send(pipe, buf):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  break<br> <br>&nbsp; &nbsp; &nbsp; &nbsp;  data += buf<br>-&nbsp; &nbsp; &nbsp; &nbsp; if DEBUG_IDRP:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Got: \n%s" % util.hexprint(buf)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Got: \n%s" % util.hexprint(buf))<br> <br>&nbsp; &nbsp;  return parse_frames(data)<br> <br>@@ -97,8 +93,7 @@ def get_freq(pipe):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ord(els[2]),<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ord(els[1]),<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ord(els[0])))<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if DEBUG_IDRP:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Freq: %f" % freq<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Freq: %f" % freq)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  return freq<br> <br>&nbsp; &nbsp;  raise errors.InvalidDataError("No frequency frame received")<br>diff --git a/chirp/kenwood_live.py b/chirp/kenwood_live.py<br>index 971c08e..f63dda5 100644<br>--- a/chirp/kenwood_live.py<br>+++ b/chirp/kenwood_live.py<br>@@ -29,8 +29,6 @@ from chirp.settings import RadioSetting, RadioSettingGroup, \<br>&nbsp; &nbsp;  RadioSettingValueInteger, RadioSettingValueBoolean, \<br>&nbsp; &nbsp;  RadioSettingValueString, RadioSettingValueList, RadioSettings<br> <br>-DEBUG = True<br>-<br> DUPLEX = { 0 : "", 1 : "+", 2 : "-" }<br> MODES = { 0 : "FM", 1 : "AM" }<br> STEPS = list(chirp_common.TUNING_STEPS)<br>@@ -49,8 +47,7 @@ def command(ser, cmd, *args):<br>&nbsp; &nbsp;  LOCK.acquire()<br>&nbsp; &nbsp;  if args:<br>&nbsp; &nbsp; &nbsp; &nbsp;  cmd += " " + " ".join(args)<br>-&nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print "PC-&gt;RADIO: %s" % cmd<br>+&nbsp; &nbsp; dprint("PC-&gt;RADIO: %s" % cmd)<br>&nbsp; &nbsp;  ser.write(cmd + "\r")<br> <br>&nbsp; &nbsp;  result = ""<br>@@ -60,8 +57,7 @@ def command(ser, cmd, *args):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  print "Timeout waiting for data"<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  break<br> <br>-&nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print "D7-&gt;PC: %s" % result.strip()<br>+&nbsp; &nbsp; dprint("D7-&gt;PC: %s" % result.strip())<br> <br>&nbsp; &nbsp;  LOCK.release()<br> <br>diff --git a/chirp/kguv8d.py b/chirp/kguv8d.py<br>index 772b04f..3344b5c 100644<br>--- a/chirp/kguv8d.py<br>+++ b/chirp/kguv8d.py<br>@@ -17,17 +17,12 @@<br> <br> import time<br> import os<br>-from chirp import util, chirp_common, bitwise, memmap, errors, directory<br>+from chirp import util, chirp_common, bitwise, memmap, errors, directory, dprint<br> from chirp.settings import RadioSetting, RadioSettingGroup, \<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  RadioSettingValueBoolean, RadioSettingValueList, \<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  RadioSettingValueInteger, RadioSettingValueString, \<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  RadioSettings<br> <br>-if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; CHIRP_DEBUG = True<br>-else:<br>-&nbsp; &nbsp; CHIRP_DEBUG = False<br>-<br> CMD_ID = 128<br> CMD_END = 129<br> CMD_RD = 130<br>@@ -304,8 +299,7 @@ class KGUV8DRadio(chirp_common.CloneModeRadio,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  _packet += payload<br>&nbsp; &nbsp; &nbsp; &nbsp;  # calculate and add the checksum to the packet<br>&nbsp; &nbsp; &nbsp; &nbsp;  _packet += chr(self._checksum(_packet[1:]))<br>-&nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Sent:\n%s" % util.hexprint(_packet)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Sent:\n%s" % util.hexprint(_packet))<br>&nbsp; &nbsp; &nbsp; &nbsp;  self.pipe.write(_packet)<br> <br>&nbsp; &nbsp;  def _read_record(self):<br>@@ -317,9 +311,8 @@ class KGUV8DRadio(chirp_common.CloneModeRadio,<br>&nbsp; &nbsp; &nbsp; &nbsp;  _cs += self._checksum(_packet)<br>&nbsp; &nbsp; &nbsp; &nbsp;  _cs %= 256<br>&nbsp; &nbsp; &nbsp; &nbsp;  _rcs = ord(self.pipe.read(1))<br>-&nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "_cs =", _cs<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "_rcs=", _rcs<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("_cs =", _cs)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("_rcs=", _rcs)<br>&nbsp; &nbsp; &nbsp; &nbsp;  return (_rcs != _cs, _packet)<br> <br> # Identify the radio<br>@@ -350,14 +343,12 @@ class KGUV8DRadio(chirp_common.CloneModeRadio,<br>&nbsp; &nbsp; &nbsp; &nbsp;  for _i in range(0, 10):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  self._write_record(CMD_ID)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  _chksum_err, _resp = self._read_record()<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Got:\n%s" % util.hexprint(_resp)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Got:\n%s" % util.hexprint(_resp))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if _chksum_err:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  print "Checksum error: retrying ident..."<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  time.sleep(0.100)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  continue<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Model %s" % util.hexprint(_resp[0:7])<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Model %s" % util.hexprint(_resp[0:7]))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if _resp[0:7] == self._model:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  return<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if len(_resp) == 0:<br>@@ -407,8 +398,7 @@ class KGUV8DRadio(chirp_common.CloneModeRadio,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  # TODO: probably should retry a few times here<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  print util.hexprint(resp)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  raise Exception("Checksum error on read")<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Got:\n%s" % util.hexprint(resp)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Got:\n%s" % util.hexprint(resp))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  image += resp[2:]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if self.status_fn:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  status = chirp_common.Status()<br>@@ -436,11 +426,9 @@ class KGUV8DRadio(chirp_common.CloneModeRadio,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  req = chr(i / 256) + chr(i % 256)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  chunk = self.get_mmap()[ptr:ptr + blocksize]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  self._write_record(CMD_WR, req + chunk)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print util.hexprint(req + chunk)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint(util.hexprint(req + chunk))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  cserr, ack = self._read_record()<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print util.hexprint(ack)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint(util.hexprint(ack))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  j = ord(ack[0]) * 256 + ord(ack[1])<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if cserr or j != ptr:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  raise Exception("Radio did not ack block %i" % ptr)<br>@@ -537,9 +525,8 @@ class KGUV8DRadio(chirp_common.CloneModeRadio,<br>&nbsp; &nbsp; &nbsp; &nbsp;  # always set it even if no dtcs is used<br>&nbsp; &nbsp; &nbsp; &nbsp;  mem.dtcs_polarity = "%s%s" % (tpol or "N", rpol or "N")<br> <br>-&nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Got TX %s (%i) RX %s (%i)" % (txmode, _mem.txtone,<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  rxmode, _mem.rxtone)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Got TX %s (%i) RX %s (%i)" % (txmode, _mem.txtone,<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rxmode, _mem.rxtone))<br> <br>&nbsp; &nbsp;  def get_memory(self, number):<br>&nbsp; &nbsp; &nbsp; &nbsp;  _mem = self._memobj.memory[number]<br>@@ -549,8 +536,7 @@ class KGUV8DRadio(chirp_common.CloneModeRadio,<br>&nbsp; &nbsp; &nbsp; &nbsp;  mem.number = number<br>&nbsp; &nbsp; &nbsp; &nbsp;  _valid = self._memobj.valid[mem.number]<br> <br>-&nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print number, _valid == MEM_VALID<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint(number, _valid == MEM_VALID)<br>&nbsp; &nbsp; &nbsp; &nbsp;  if _valid != MEM_VALID:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  mem.empty = True<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  return mem<br>@@ -618,9 +604,8 @@ class KGUV8DRadio(chirp_common.CloneModeRadio,<br>&nbsp; &nbsp; &nbsp; &nbsp;  else:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  _mem.rxtone = 0<br> <br>-&nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Set TX %s (%i) RX %s (%i)" % (tx_mode, _mem.txtone,<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  rx_mode, _mem.rxtone)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Set TX %s (%i) RX %s (%i)" % (tx_mode, _mem.txtone,<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rx_mode, _mem.rxtone))<br> <br>&nbsp; &nbsp;  def set_memory(self, mem):<br>&nbsp; &nbsp; &nbsp; &nbsp;  number = mem.number<br>diff --git a/chirp/kyd.py b/chirp/kyd.py<br>index 2d4223d..ac2c3b1 100644<br>--- a/chirp/kyd.py<br>+++ b/chirp/kyd.py<br>@@ -19,13 +19,11 @@ import os<br> import struct<br> <br> from chirp import chirp_common, directory, memmap<br>-from chirp import bitwise, errors, util<br>+from chirp import bitwise, errors, util, dprint<br> from chirp.settings import RadioSetting, RadioSettingGroup, \<br>&nbsp; &nbsp;  RadioSettingValueInteger, RadioSettingValueList, \<br>&nbsp; &nbsp;  RadioSettingValueBoolean, RadioSettings<br> <br>-DEBUG = os.getenv("CHIRP_DEBUG") and True or False<br>-<br> MEM_FORMAT = """<br> #seekto 0x0010;<br> struct {<br>@@ -132,8 +130,7 @@ def _nc630a_read_block(radio, block_addr, block_size):<br> <br>&nbsp; &nbsp;  cmd = struct.pack("&gt;cHb", 'R', block_addr, BLOCK_SIZE)<br>&nbsp; &nbsp;  expectedresponse = "W" + cmd[1:]<br>-&nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print("Reading block %04x..." % (block_addr))<br>+&nbsp; &nbsp; dprint("Reading block %04x..." % (block_addr))<br> <br>&nbsp; &nbsp;  try:<br>&nbsp; &nbsp; &nbsp; &nbsp;  serial.write(cmd)<br>@@ -159,9 +156,8 @@ def _nc630a_write_block(radio, block_addr, block_size):<br>&nbsp; &nbsp;  cmd = struct.pack("&gt;cHb", 'W', block_addr, BLOCK_SIZE)<br>&nbsp; &nbsp;  data = radio.get_mmap()[block_addr:block_addr + 8]<br> <br>-&nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print("Writing Data:")<br>-&nbsp; &nbsp; &nbsp; &nbsp; print util.hexprint(cmd + data)<br>+&nbsp; &nbsp; dprint("Writing Data:")<br>+&nbsp; &nbsp; dprint(util.hexprint(cmd + data))<br> <br>&nbsp; &nbsp;  try:<br>&nbsp; &nbsp; &nbsp; &nbsp;  serial.write(cmd + data)<br>@@ -190,9 +186,8 @@ def do_download(radio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  block = _nc630a_read_block(radio, addr, BLOCK_SIZE)<br>&nbsp; &nbsp; &nbsp; &nbsp;  data += block<br> <br>-&nbsp; &nbsp; &nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Address: %04x" % addr<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print util.hexprint(block)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Address: %04x" % addr)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint(util.hexprint(block))<br> <br>&nbsp; &nbsp;  _nc630a_exit_programming_mode(radio)<br> <br>@@ -301,9 +296,8 @@ class NC630aRadio(chirp_common.CloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  if mem.tmode == "DTCS":<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  mem.dtcs_polarity = "%s%s" % (tpol, rpol)<br> <br>-&nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Got TX %s (%i) RX %s (%i)" % (txmode, _mem.tx_tone,<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  rxmode, _mem.rx_tone)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Got TX %s (%i) RX %s (%i)" % (txmode, _mem.tx_tone,<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rxmode, _mem.rx_tone))<br> <br>&nbsp; &nbsp;  def get_memory(self, number):<br>&nbsp; &nbsp; &nbsp; &nbsp;  bitpos = (1 &lt;&lt; ((number - 1) % 8))<br>@@ -387,9 +381,8 @@ class NC630aRadio(chirp_common.CloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  else:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  _mem.rx_tone = 0xFFFF<br> <br>-&nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Set TX %s (%i) RX %s (%i)" % (tx_mode, _mem.tx_tone,<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  rx_mode, _mem.rx_tone)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Set TX %s (%i) RX %s (%i)" % (tx_mode, _mem.tx_tone,<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rx_mode, _mem.rx_tone))<br> <br>&nbsp; &nbsp;  def set_memory(self, mem):<br>&nbsp; &nbsp; &nbsp; &nbsp;  bitpos = (1 &lt;&lt; ((mem.number - 1) % 8))<br>diff --git a/chirp/leixen.py b/chirp/leixen.py<br>index 1977f0c..285fe84 100644<br>--- a/chirp/leixen.py<br>+++ b/chirp/leixen.py<br>@@ -24,11 +24,6 @@ from chirp.settings import RadioSetting, RadioSettingGroup, \<br>&nbsp; &nbsp;  RadioSettingValueFloat, InvalidValueError, RadioSettings<br> from textwrap import dedent<br> <br>-if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; CHIRP_DEBUG = True<br>-else:<br>-&nbsp; &nbsp; CHIRP_DEBUG = False<br>-<br> MEM_FORMAT = """<br> #seekto 0x0184;<br> struct {<br>diff --git a/chirp/puxing.py b/chirp/puxing.py<br>index 88cbe79..f38b41e 100644<br>--- a/chirp/puxing.py<br>+++ b/chirp/puxing.py<br>@@ -20,11 +20,6 @@ import os<br> from chirp import util, chirp_common, bitwise, errors, directory<br> from chirp.wouxun_common import wipe_memory, do_download, do_upload<br> <br>-if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; DEBUG = True<br>-else:<br>-&nbsp; &nbsp; DEBUG = False<br>-<br> def _puxing_prep(radio):<br>&nbsp; &nbsp;  radio.pipe.write("\x02PROGRA")<br>&nbsp; &nbsp;  ack = radio.pipe.read(1)<br>diff --git a/chirp/th9800.py b/chirp/th9800.py<br>index 3edc310..50dbd53 100644<br>--- a/chirp/th9800.py<br>+++ b/chirp/th9800.py<br>@@ -15,7 +15,7 @@<br> # You should have received a copy of the GNU General Public License<br> # along with this program.&nbsp; If not, see &lt;<a href="http://www.gnu.org/licenses/" target="_blank">http://www.gnu.org/licenses/</a>&gt;.<br> <br>-from chirp import bitwise, chirp_common, directory, errors, util, memmap<br>+from chirp import bitwise, chirp_common, directory, errors, util, memmap, dprint<br> import struct<br> from chirp.settings import RadioSetting, RadioSettingGroup, \<br>&nbsp; &nbsp;  RadioSettingValueInteger, RadioSettingValueList, \<br>@@ -26,11 +26,6 @@ import os<br> import time<br> from datetime import date<br> <br>-if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; CHIRP_DEBUG = True<br>-else:<br>-&nbsp; &nbsp; CHIRP_DEBUG = False<br>-<br> TH9800_MEM_FORMAT = """<br> struct mem {<br>&nbsp;  lbcd rx_freq[4];<br>@@ -323,8 +318,7 @@ class TYTTH9800Base(chirp_common.Radio):<br>&nbsp; &nbsp;  _prev_active = self.get_active("chan_active", mem.number)<br>&nbsp; &nbsp;  self.set_active("chan_active", mem.number, not mem.empty)<br>&nbsp; &nbsp;  if mem.empty or not _prev_active:<br>-&nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print "initializing memory channel %d" % mem.number<br>+&nbsp; &nbsp; &nbsp; dprint("initializing memory channel %d" % mem.number)<br>&nbsp; &nbsp; &nbsp;  _mem.set_raw(BLANK_MEMORY)<br> <br>&nbsp; &nbsp;  if mem.empty:<br>@@ -390,8 +384,7 @@ class TYTTH9800Base(chirp_common.Radio):<br>&nbsp; &nbsp;  _mem.step = STEPS.index(mem.tuning_step)<br> <br>&nbsp; &nbsp;  for setting in mem.extra:<br>-&nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "@set_mem:", setting.get_name(), setting.value<br>+&nbsp; &nbsp; &nbsp; dprint("@set_mem:", setting.get_name(), setting.value)<br>&nbsp; &nbsp; &nbsp;  setattr(_mem, setting.get_name(), setting.value)<br> <br>&nbsp;  def get_settings(self):<br>@@ -559,9 +552,7 @@ class TYTTH9800Base(chirp_common.Radio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  oldval = getattr(_settings, setting)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  newval = element.value<br> <br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Setting %s(%s) &lt;= %s" % (setting,<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; oldval, newval)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Setting %s(%s) &lt;= %s" % (setting, oldval, newval))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  setattr(_settings, setting, newval)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  except Exception, e:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  print element.get_name()<br>@@ -666,12 +657,12 @@ def _upload(radio, memsize = 0xF400, blocksize = 0x80):<br>&nbsp; &nbsp;  m = today.month<br>&nbsp; &nbsp;  d = today.day<br>&nbsp; &nbsp;  _info = radio._memobj.info<br>-&nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; ly = _info.prog_yr<br>-&nbsp; &nbsp; &nbsp; &nbsp; lm = _info.prog_mon<br>-&nbsp; &nbsp; &nbsp; &nbsp; ld = _info.prog_day<br>-&nbsp; &nbsp; &nbsp; &nbsp; print "Updating last program date:%d/%d/%d" % (lm,ld,ly)<br>-&nbsp; &nbsp; &nbsp; &nbsp; print "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; to today:%d/%d/%d" % (m,d,y)<br>+<br>+&nbsp; &nbsp; ly = _info.prog_yr<br>+&nbsp; &nbsp; lm = _info.prog_mon<br>+&nbsp; &nbsp; ld = _info.prog_day<br>+&nbsp; &nbsp; dprint("Updating last program date:%d/%d/%d" % (lm,ld,ly))<br>+&nbsp; &nbsp; dprint("&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; to today:%d/%d/%d" % (m,d,y))<br> <br>&nbsp; &nbsp;  _info.prog_yr = y<br>&nbsp; &nbsp;  _info.prog_mon = m<br>@@ -680,8 +671,7 @@ def _upload(radio, memsize = 0xF400, blocksize = 0x80):<br>&nbsp; &nbsp;  offset = 0x0100<br>&nbsp; &nbsp;  for addr in range(offset, memsize, blocksize):<br>&nbsp; &nbsp; &nbsp; &nbsp;  mapaddr = addr + radio._mmap_offset - offset<br>-&nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "addr: 0x%04X, mmapaddr: 0x%04X" % (addr, mapaddr)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("addr: 0x%04X, mmapaddr: 0x%04X" % (addr, mapaddr))<br>&nbsp; &nbsp; &nbsp; &nbsp;  msg = struct.pack("&gt;cHB", "W", addr, blocksize)&nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp;  msg += radio._mmap[mapaddr:(mapaddr + blocksize)]<br>&nbsp; &nbsp; &nbsp; &nbsp;  print util.hexprint(msg)<br>@@ -703,8 +693,7 @@ def _upload(radio, memsize = 0xF400, blocksize = 0x80):<br> <br>&nbsp; &nbsp;  # Checksum?<br>&nbsp; &nbsp;  final_data = radio.pipe.read(3)<br>-&nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; print "final:", util.hexprint(final_data)<br>+&nbsp; &nbsp; dprint("final:", util.hexprint(final_data))<br> <br> @directory.register<br> class TYTTH9800Radio(TYTTH9800Base, chirp_common.CloneModeRadio,<br>diff --git a/chirp/th_uv3r.py b/chirp/th_uv3r.py<br>index 5e3e2c0..3b670fe 100644<br>--- a/chirp/th_uv3r.py<br>+++ b/chirp/th_uv3r.py<br>@@ -19,11 +19,6 @@ import os<br> from chirp import chirp_common, bitwise, errors, directory<br> from chirp.wouxun_common import do_download, do_upload<br> <br>-if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; DEBUG = True<br>-else:<br>-&nbsp; &nbsp; DEBUG = False<br>-<br> def tyt_uv3r_prep(radio):<br>&nbsp; &nbsp;  try:<br>&nbsp; &nbsp; &nbsp; &nbsp;  radio.pipe.write("PROGRAMa")<br>diff --git a/chirp/thd72.py b/chirp/thd72.py<br>index 0d80adc..926a927 100644<br>--- a/chirp/thd72.py<br>+++ b/chirp/thd72.py<br>@@ -14,11 +14,9 @@<br> # along with this program.&nbsp; If not, see &lt;<a href="http://www.gnu.org/licenses/" target="_blank">http://www.gnu.org/licenses/</a>&gt;.<br> <br> from chirp import chirp_common, errors, util, directory<br>-from chirp import bitwise, memmap<br>+from chirp import bitwise, memmap, dprint<br> import time, struct, sys<br> <br>-DEBUG = True<br>-<br> # TH-D72 memory map<br> # 0x0000..0x0200: startup password and other stuff<br> # 0x0200..0x0400: current channel and other settings<br>@@ -452,13 +450,11 @@ class THD72Radio(chirp_common.CloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  start = time.time()<br> <br>&nbsp; &nbsp; &nbsp; &nbsp;  data = ""<br>-&nbsp; &nbsp; &nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "PC-&gt;D72: %s" % cmd<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("PC-&gt;D72: %s" % cmd)<br>&nbsp; &nbsp; &nbsp; &nbsp;  self.pipe.write(cmd + "\r")<br>&nbsp; &nbsp; &nbsp; &nbsp;  while not data.endswith("\r") and (time.time() - start) &lt; timeout:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  data += self.pipe.read(1)<br>-&nbsp; &nbsp; &nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "D72-&gt;PC: %s" % data.strip()<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("D72-&gt;PC: %s" % data.strip())<br>&nbsp; &nbsp; &nbsp; &nbsp;  return data.strip()<br> <br>&nbsp; &nbsp;  def get_id(self):<br>diff --git a/chirp/tk8102.py b/chirp/tk8102.py<br>index 32e8621..9cc661f 100644<br>--- a/chirp/tk8102.py<br>+++ b/chirp/tk8102.py<br>@@ -17,7 +17,7 @@ import struct<br> import os<br> <br> from chirp import chirp_common, directory, memmap, errors, util<br>-from chirp import bitwise<br>+from chirp import bitwise, dprint<br> from chirp.settings import RadioSettingGroup, RadioSetting<br> from chirp.settings import RadioSettingValueBoolean, RadioSettingValueList<br> from chirp.settings import RadioSettingValueString, RadioSettings<br>@@ -317,9 +317,8 @@ class KenwoodTKx102Radio(chirp_common.CloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  else:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  _mem.rx_tone = 0xFFFF<br> <br>-&nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Set TX %s (%i) RX %s (%i)" % (tx_mode, _mem.tx_tone,<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  rx_mode, _mem.rx_tone)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Set TX %s (%i) RX %s (%i)" % (tx_mode, _mem.tx_tone,<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rx_mode, _mem.rx_tone))<br>&nbsp; &nbsp;  def set_memory(self, mem):<br>&nbsp; &nbsp; &nbsp; &nbsp;  _mem = self._memobj.memory[mem.number - 1]<br> <br>diff --git a/chirp/tmv71_ll.py b/chirp/tmv71_ll.py<br>index dac7f36..affe360 100644<br>--- a/chirp/tmv71_ll.py<br>+++ b/chirp/tmv71_ll.py<br>@@ -15,9 +15,7 @@<br> <br> import struct, time<br> <br>-from chirp import memmap, chirp_common, errors<br>-<br>-DEBUG = True<br>+from chirp import memmap, chirp_common, errors, dprint<br> <br> POS_MODE&nbsp;  = 5<br> POS_DUP&nbsp; &nbsp; = 6<br>@@ -50,13 +48,11 @@ def command(s, cmd, timeout=0.5):<br>&nbsp; &nbsp;  start = time.time()<br> <br>&nbsp; &nbsp;  data = ""<br>-&nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print "PC-&gt;V71: %s" % cmd<br>+&nbsp; &nbsp; dprint("PC-&gt;V71: %s" % cmd)<br>&nbsp; &nbsp;  s.write(cmd + "\r")<br>&nbsp; &nbsp;  while not data.endswith("\r") and (time.time() - start) &lt; timeout:<br>&nbsp; &nbsp; &nbsp; &nbsp;  data += s.read(1)<br>-&nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print "V71-&gt;PC: %s" % data.strip()<br>+&nbsp; &nbsp; dprint("V71-&gt;PC: %s" % data.strip())<br>&nbsp; &nbsp;  return data.strip()<br> <br> def get_id(s):<br>diff --git a/chirp/uv5r.py b/chirp/uv5r.py<br>index 6fcbae1..55e0516 100644<br>--- a/chirp/uv5r.py<br>+++ b/chirp/uv5r.py<br>@@ -18,18 +18,13 @@ import time<br> import os<br> <br> from chirp import chirp_common, errors, util, directory, memmap<br>-from chirp import bitwise<br>+from chirp import bitwise, dprint<br> from chirp.settings import RadioSetting, RadioSettingGroup, \<br>&nbsp; &nbsp;  RadioSettingValueInteger, RadioSettingValueList, \<br>&nbsp; &nbsp;  RadioSettingValueBoolean, RadioSettingValueString, \<br>&nbsp; &nbsp;  RadioSettingValueFloat, InvalidValueError, RadioSettings<br> from textwrap import dedent<br> <br>-if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; CHIRP_DEBUG = True<br>-else:<br>-&nbsp; &nbsp; CHIRP_DEBUG = False<br>-<br> MEM_FORMAT = """<br> #seekto 0x0008;<br> struct {<br>@@ -394,8 +389,7 @@ def _firmware_version_from_image(radio):<br>&nbsp; &nbsp;  version = _firmware_version_from_data(radio.get_mmap(),<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  radio._fw_ver_file_start,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  radio._fw_ver_file_stop)<br>-&nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print "_firmware_version_from_image: " + util.hexprint(version)<br>+&nbsp; &nbsp; dprint("_firmware_version_from_image: " + util.hexprint(version))<br>&nbsp; &nbsp;  return version<br> <br> def _special_block_from_data(data, special_block_start, special_block_stop):<br>@@ -404,8 +398,7 @@ def _special_block_from_data(data, special_block_start, special_block_stop):<br> <br> def _special_block_from_image(radio):<br>&nbsp; &nbsp;  special_block = _special_block_from_data(radio.get_mmap(), 0x0CFA, 0x0D01)<br>-&nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print "_special_block_from_image: " + util.hexprint(special_block)<br>+&nbsp; &nbsp; dprint("_special_block_from_image: " + util.hexprint(special_block))<br>&nbsp; &nbsp;  return special_block<br> <br> def _do_ident(radio, magic):<br>@@ -504,19 +497,16 @@ def _do_download(radio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  raise errors.RadioError("Incorrect 'Model' selected.")<br> <br>&nbsp; &nbsp;  # Main block<br>-&nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print "downloading main block..."<br>+&nbsp; &nbsp; dprint("downloading main block...")<br>&nbsp; &nbsp;  for i in range(0, 0x1800, 0x40):<br>&nbsp; &nbsp; &nbsp; &nbsp;  data += _read_block(radio, i, 0x40)<br>&nbsp; &nbsp; &nbsp; &nbsp;  _do_status(radio, i)<br>-&nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print "done."<br>-&nbsp; &nbsp; &nbsp; &nbsp; print "downloading aux block..."<br>+&nbsp; &nbsp; dprint("done.")<br>+&nbsp; &nbsp; dprint("downloading aux block...")<br>&nbsp; &nbsp;  # Auxiliary block starts at 0x1ECO (?)<br>&nbsp; &nbsp;  for i in range(0x1EC0, 0x2000, 0x40):<br>&nbsp; &nbsp; &nbsp; &nbsp;  data += _read_block(radio, i, 0x40)<br>-&nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print "done."<br>+&nbsp; &nbsp; dprint("done.")<br>&nbsp; &nbsp;  return memmap.MemoryMap(data)<br> <br> def _send_block(radio, addr, data):<br>@@ -916,8 +906,7 @@ class BaofengUV5R(chirp_common.CloneModeRadio,<br> <br>&nbsp; &nbsp;  def _is_orig(self):<br>&nbsp; &nbsp; &nbsp; &nbsp;  version_tag = _firmware_version_from_image(self)<br>-&nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "@_is_orig, version_tag:", util.hexprint(version_tag)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("@_is_orig, version_tag:", util.hexprint(version_tag))<br>&nbsp; &nbsp; &nbsp; &nbsp;  try:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if 'BFB' in version_tag:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  idx = version_tag.index("BFB") + 3<br>diff --git a/chirp/vx170.py b/chirp/vx170.py<br>index 20aac04..eaa7dbc 100644<br>--- a/chirp/vx170.py<br>+++ b/chirp/vx170.py<br>@@ -19,11 +19,6 @@ from textwrap import dedent<br> import time, os<br> from chirp import ft7800<br> <br>-if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; CHIRP_DEBUG = True<br>-else:<br>-&nbsp; &nbsp; CHIRP_DEBUG = False<br>-<br> MEM_FORMAT = """<br> #seekto 0x018A;<br> struct {<br>diff --git a/chirp/vx2.py b/chirp/vx2.py<br>index 3156806..dadf336 100644<br>--- a/chirp/vx2.py<br>+++ b/chirp/vx2.py<br>@@ -14,18 +14,13 @@<br> # You should have received a copy of the GNU General Public License<br> # along with this program.&nbsp; If not, see &lt;<a href="http://www.gnu.org/licenses/" target="_blank">http://www.gnu.org/licenses/</a>&gt;.<br> <br>-from chirp import chirp_common, yaesu_clone, directory, bitwise<br>+from chirp import chirp_common, yaesu_clone, directory, bitwise, dprint<br> from chirp.settings import RadioSetting, RadioSettingGroup, \<br>&nbsp; &nbsp;  RadioSettingValueInteger, RadioSettingValueList, \<br>&nbsp; &nbsp;  RadioSettingValueBoolean, RadioSettingValueString, \<br>&nbsp; &nbsp;  RadioSettings<br> import os, traceback, re<br> <br>-if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; CHIRP_DEBUG = True<br>-else:<br>-&nbsp; &nbsp; CHIRP_DEBUG = False<br>-<br> MEM_FORMAT = """<br> #seekto 0x7F52;<br> u8 checksum;<br>@@ -410,9 +405,8 @@ class VX2Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  return VX2BankModel(self)<br> <br>&nbsp; &nbsp;  def _decode_chars(self, inarr):<br>-&nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "@_decode_chars, type: %s" % type(inarr)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print inarr<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("@_decode_chars, type: %s" % type(inarr))<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint(inarr)<br>&nbsp; &nbsp; &nbsp; &nbsp;  outstr = ""<br>&nbsp; &nbsp; &nbsp; &nbsp;  for i in inarr:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if i == 0xFF:<br>@@ -421,9 +415,8 @@ class VX2Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  return outstr.rstrip()<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  <br>&nbsp; &nbsp;  def _encode_chars(self, instr, length = 16):<br>-&nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "@_encode_chars, type: %s" % type(instr)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print instr<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("@_encode_chars, type: %s" % type(instr))<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint(instr)<br>&nbsp; &nbsp; &nbsp; &nbsp;  outarr = []<br>&nbsp; &nbsp; &nbsp; &nbsp;  instr = str(instr)<br>&nbsp; &nbsp; &nbsp; &nbsp;  for i in range(0, length):<br>@@ -648,8 +641,7 @@ class VX2Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  for c in dtmfsetting.digits:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if c &lt; len(DTMFCHARSET):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  dtmfstr += DTMFCHARSET[c]<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print dtmfstr<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint(dtmfstr)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  dtmfentry = RadioSettingValueString(0, 16, dtmfstr)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  dtmfentry.set_charset(DTMFCHARSET + list(" "))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  rs = RadioSetting(name, name.upper(), dtmfentry)<br>@@ -676,8 +668,7 @@ class VX2Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  newval.append(DTMFCHARSET.index(dtmfstr[i]))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  else:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  newval.append(0xFF)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print newval<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint(newval)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  idx = int(setting[-1:]) - 1<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  _settings = self._memobj.dtmf[idx]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  _settings.digits = newval<br>@@ -698,12 +689,10 @@ class VX2Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  newval = self._encode_chars(newval)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if setting == "openmsg":<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  newval = self._encode_chars(newval, 6)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Setting %s(%s) &lt;= %s" % (setting,<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; oldval, newval)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Setting %s(%s) &lt;= %s" % (setting, oldval, newval))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  setattr(_settings, setting, newval)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  except Exception, e:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  print element.get_name()<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  raise<br>&nbsp; &nbsp; &nbsp; &nbsp;  <br>-&nbsp; &nbsp; &nbsp; &nbsp; <br>\ No newline at end of file<br>+&nbsp; &nbsp; &nbsp; &nbsp; <br>diff --git a/chirp/vx3.py b/chirp/vx3.py<br>index 99d0951..dfa6ffe 100644<br>--- a/chirp/vx3.py<br>+++ b/chirp/vx3.py<br>@@ -15,7 +15,7 @@<br> # along with this program.&nbsp; If not, see &lt;<a href="http://www.gnu.org/licenses/" target="_blank">http://www.gnu.org/licenses/</a>&gt;.<br> <br> from chirp import chirp_common, yaesu_clone, directory<br>-from chirp import bitwise<br>+from chirp import bitwise, dprint<br> from chirp.settings import RadioSetting, RadioSettingGroup, \<br>&nbsp; &nbsp;  RadioSettingValueInteger, RadioSettingValueList, \<br>&nbsp; &nbsp;  RadioSettingValueBoolean, RadioSettingValueString, \<br>@@ -29,11 +29,6 @@ import os, re<br> #0x0409 checksum2?<br> #0x04C9 checksum2a?<br> <br>-if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; CHIRP_DEBUG = True<br>-else:<br>-&nbsp; &nbsp; CHIRP_DEBUG = False<br>-<br> MEM_FORMAT = """<br> #seekto 0x7F4A;<br> u8 checksum;<br>@@ -499,9 +494,8 @@ class VX3Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  return VX3BankModel(self)<br> <br>&nbsp; &nbsp;  def _decode_chars(self, inarr):<br>-&nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "@_decode_chars, type: %s" % type(inarr)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print inarr<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("@_decode_chars, type: %s" % type(inarr))<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint(inarr)<br>&nbsp; &nbsp; &nbsp; &nbsp;  outstr = ""<br>&nbsp; &nbsp; &nbsp; &nbsp;  for i in inarr:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if i == 0xFF:<br>@@ -510,9 +504,8 @@ class VX3Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  return outstr.rstrip()<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  <br>&nbsp; &nbsp;  def _encode_chars(self, instr, length = 16):<br>-&nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "@_encode_chars, type: %s" % type(instr)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print instr<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("@_encode_chars, type: %s" % type(instr))<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint(instr)<br>&nbsp; &nbsp; &nbsp; &nbsp;  outarr = []<br>&nbsp; &nbsp; &nbsp; &nbsp;  instr = str(instr)<br>&nbsp; &nbsp; &nbsp; &nbsp;  for i in range(length):<br>@@ -785,8 +778,7 @@ class VX3Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  for c in dtmfsetting.memory:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if c &lt; len(DTMFCHARSET):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  dtmfstr += DTMFCHARSET[c]<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print dtmfstr<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint(dtmfstr)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  dtmfentry = RadioSettingValueString(0, 16, dtmfstr)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  dtmfentry.set_charset(DTMFCHARSET + list(" "))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  rs = RadioSetting(name, name.upper(), dtmfentry)<br>@@ -861,8 +853,7 @@ class VX3Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  newval.append(DTMFCHARSET.index(dtmfstr[i]))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  else:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  newval.append(0xFF)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print newval<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint(newval)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  idx = int(setting[-1:])<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  _settings = self._memobj.dtmf[idx]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  _settings.memory = newval<br>@@ -885,11 +876,9 @@ class VX3Radio(yaesu_clone.YaesuCloneModeRadio):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  newval = self._encode_chars(newval)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if setting == "openmsg":<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  newval = self._encode_chars(newval, 6)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if CHIRP_DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Setting %s(%s) &lt;= %s" % (setting,<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; oldval, newval)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Setting %s(%s) &lt;= %s" % (setting, oldval, newval))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  setattr(_settings, setting, newval)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  except Exception, e:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  print element.get_name()<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  raise<br>-&nbsp; &nbsp; &nbsp; &nbsp; <br>\ No newline at end of file<br>+&nbsp; &nbsp; &nbsp; &nbsp; <br>diff --git a/chirp/vx8.py b/chirp/vx8.py<br>index 02490a1..945abbd 100644<br>--- a/chirp/vx8.py<br>+++ b/chirp/vx8.py<br>@@ -17,7 +17,7 @@ import os<br> import re<br> <br> from chirp import chirp_common, yaesu_clone, directory<br>-from chirp import bitwise<br>+from chirp import bitwise, dprint<br> from chirp.settings import RadioSettingGroup, RadioSetting, RadioSettings<br> from chirp.settings import RadioSettingValueInteger, RadioSettingValueString<br> from chirp.settings import RadioSettingValueList, RadioSettingValueBoolean<br>@@ -1461,8 +1461,7 @@ class VX8DRadio(VX8Radio):<br>&nbsp; &nbsp; &nbsp; &nbsp;  is_latitude = name.endswith("latitude")<br>&nbsp; &nbsp; &nbsp; &nbsp;  lat_long = setting.value.get_value().strip()<br>&nbsp; &nbsp; &nbsp; &nbsp;  sign, l_d, l_m, l_s = cls._str_to_latlong(lat_long, is_latitude)<br>-&nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "%s: %d %d %d %d" % (name, sign, l_d, l_m, l_s)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("%s: %d %d %d %d" % (name, sign, l_d, l_m, l_s))<br>&nbsp; &nbsp; &nbsp; &nbsp;  setattr(obj, "%s_sign" % name, sign)<br>&nbsp; &nbsp; &nbsp; &nbsp;  setattr(obj, "%s_degree" % name, l_d)<br>&nbsp; &nbsp; &nbsp; &nbsp;  setattr(obj, "%s_minute" % name, l_m)<br>@@ -1499,9 +1498,8 @@ class VX8DRadio(VX8Radio):<br> <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  try:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  old_val = getattr(obj, setting)<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Setting %s(%r) &lt;= %s" % (<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; element.get_name(), old_val, element.value)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Setting %s(%r) &lt;= %s" % (<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; element.get_name(), old_val, element.value))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  setattr(obj, setting, element.value)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  except AttributeError as e:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  print "Setting %s is not in the memory map: %s" % (<br>diff --git a/chirp/wouxun.py b/chirp/wouxun.py<br>index 6feec42..e63f6ed 100644<br>--- a/chirp/wouxun.py<br>+++ b/chirp/wouxun.py<br>@@ -17,7 +17,7 @@<br> <br> import time<br> import os<br>-from chirp import util, chirp_common, bitwise, memmap, errors, directory<br>+from chirp import util, chirp_common, bitwise, memmap, errors, directory, dprint<br> from chirp.settings import RadioSetting, RadioSettingGroup, \<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  RadioSettingValueBoolean, RadioSettingValueList, \<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  RadioSettingValueInteger, RadioSettingValueString, \<br>@@ -717,9 +717,8 @@ class KGUVD1PRadio(chirp_common.CloneModeRadio,<br>&nbsp; &nbsp; &nbsp; &nbsp;  # always set it even if no dtcs is used<br>&nbsp; &nbsp; &nbsp; &nbsp;  mem.dtcs_polarity = "%s%s" % (tpol or "N", rpol or "N")<br> <br>-&nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Got TX %s (%i) RX %s (%i)" % (txmode, _mem.tx_tone,<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  rxmode, _mem.rx_tone)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Got TX %s (%i) RX %s (%i)" % (txmode, _mem.tx_tone,<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rxmode, _mem.rx_tone))<br> <br>&nbsp; &nbsp;  def _is_txinh(self, _mem):<br>&nbsp; &nbsp; &nbsp; &nbsp;  raw_tx = ""<br>@@ -817,9 +816,8 @@ class KGUVD1PRadio(chirp_common.CloneModeRadio,<br>&nbsp; &nbsp; &nbsp; &nbsp;  else:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  _mem.rx_tone = 0xFFFF<br> <br>-&nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Set TX %s (%i) RX %s (%i)" % (tx_mode, _mem.tx_tone,<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  rx_mode, _mem.rx_tone)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Set TX %s (%i) RX %s (%i)" % (tx_mode, _mem.tx_tone,<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rx_mode, _mem.rx_tone))<br> <br>&nbsp; &nbsp;  def set_memory(self, mem):<br>&nbsp; &nbsp; &nbsp; &nbsp;  _mem = self._memobj.memory[mem.number - 1]<br>diff --git a/chirp/wouxun_common.py b/chirp/wouxun_common.py<br>index 3c78b3a..d384007 100644<br>--- a/chirp/wouxun_common.py<br>+++ b/chirp/wouxun_common.py<br>@@ -18,7 +18,7 @@<br> <br> import struct<br> import os<br>-from chirp import util, chirp_common, memmap<br>+from chirp import util, chirp_common, memmap, dprint<br> <br> def wipe_memory(_mem, byte):<br>&nbsp; &nbsp;  """Cleanup a memory"""<br>@@ -29,8 +29,7 @@ def do_download(radio, start, end, blocksize):<br>&nbsp; &nbsp;  image = ""<br>&nbsp; &nbsp;  for i in range(start, end, blocksize):<br>&nbsp; &nbsp; &nbsp; &nbsp;  cmd = struct.pack("&gt;cHb", "R", i, blocksize)<br>-&nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print util.hexprint(cmd)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint(util.hexprint(cmd))<br>&nbsp; &nbsp; &nbsp; &nbsp;  radio.pipe.write(cmd)<br>&nbsp; &nbsp; &nbsp; &nbsp;  length = len(cmd) + blocksize<br>&nbsp; &nbsp; &nbsp; &nbsp;  resp = radio.pipe.read(length)<br>@@ -61,8 +60,7 @@ def do_upload(radio, start, end, blocksize):<br>&nbsp; &nbsp; &nbsp; &nbsp;  chunk = radio.get_mmap()[ptr:ptr+blocksize]<br>&nbsp; &nbsp; &nbsp; &nbsp;  ptr += blocksize<br>&nbsp; &nbsp; &nbsp; &nbsp;  radio.pipe.write(cmd + chunk)<br>-&nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print util.hexprint(cmd + chunk)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint(util.hexprint(cmd + chunk))<br> <br>&nbsp; &nbsp; &nbsp; &nbsp;  ack = radio.pipe.read(1)<br>&nbsp; &nbsp; &nbsp; &nbsp;  if not ack == "\x06":<br>diff --git a/chirp/yaesu_clone.py b/chirp/yaesu_clone.py<br>index 57958c3..f27c375 100644<br>--- a/chirp/yaesu_clone.py<br>+++ b/chirp/yaesu_clone.py<br>@@ -15,7 +15,7 @@<br> <br> CMD_ACK = 0x06<br> <br>-from chirp import chirp_common, util, memmap, errors<br>+from chirp import chirp_common, util, memmap, errors, dprint<br> import time, os<br> from textwrap import dedent<br> <br>@@ -49,8 +49,7 @@ def _chunk_read(pipe, count, status_fn):<br>&nbsp; &nbsp; &nbsp; &nbsp;  status.max = count<br>&nbsp; &nbsp; &nbsp; &nbsp;  status.cur = len(data)<br>&nbsp; &nbsp; &nbsp; &nbsp;  status_fn(status)<br>-&nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Read %i/%i" % (len(data), count)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Read %i/%i" % (len(data), count))<br>&nbsp; &nbsp;  return data&nbsp; &nbsp; &nbsp; &nbsp; <br> <br> def __clone_in(radio):<br>@@ -91,8 +90,7 @@ def _chunk_write(pipe, data, status_fn, block):<br>&nbsp; &nbsp; &nbsp; &nbsp;  chunk = data[i:i+block]<br>&nbsp; &nbsp; &nbsp; &nbsp;  pipe.write(chunk)<br>&nbsp; &nbsp; &nbsp; &nbsp;  count += len(chunk)<br>-&nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "@_chunk_write, count: %i, blocksize: %i" % (count,block)<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("@_chunk_write, count: %i, blocksize: %i" % (count,block))<br>&nbsp; &nbsp; &nbsp; &nbsp;  time.sleep(delay)<br> <br>&nbsp; &nbsp; &nbsp; &nbsp;  status = chirp_common.Status()<br>@@ -120,8 +118,7 @@ def __clone_out(radio):<br>&nbsp; &nbsp;  for block in radio._block_lengths:<br>&nbsp; &nbsp; &nbsp; &nbsp;  blocks += 1<br>&nbsp; &nbsp; &nbsp; &nbsp;  if blocks != len(radio._block_lengths):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if os.getenv("CHIRP_DEBUG"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "Sending %i-%i" % (pos, pos+block)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Sending %i-%i" % (pos, pos+block))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  pipe.write(radio.get_mmap()[pos:pos+block])<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  buf = pipe.read(1)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if buf and buf[0] != chr(CMD_ACK):<br>diff --git a/chirpui/reporting.py b/chirpui/reporting.py<br>index c48c6bb..23baa88 100644<br>--- a/chirpui/reporting.py<br>+++ b/chirpui/reporting.py<br>@@ -33,7 +33,6 @@ from chirp import CHIRP_VERSION, platform<br> <br> REPORT_URL = "<a href="http://chirp.danplanet.com/report/report.php?do_report" target="_blank">http://chirp.danplanet.com/report/report.php?do_report</a>"<br> ENABLED = True<br>-DEBUG = os.getenv("CHIRP_DEBUG") == "y"<br> THREAD_SEM = threading.Semaphore(10) # Maximum number of outstanding threads<br> LAST = 0<br> LAST_TYPE = None<br>@@ -45,18 +44,14 @@ try:<br> except:<br>&nbsp; &nbsp;  ENABLED = False<br> <br>-def debug(string):<br>-&nbsp; &nbsp; if DEBUG:<br>-&nbsp; &nbsp; &nbsp; &nbsp; print string<br>-<br> def should_report():<br>&nbsp; &nbsp;  if not ENABLED:<br>-&nbsp; &nbsp; &nbsp; &nbsp; debug("Not reporting due to recent failure")<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Not reporting due to recent failure")<br>&nbsp; &nbsp; &nbsp; &nbsp;  return False<br> <br>&nbsp; &nbsp;  conf = config.get()<br>&nbsp; &nbsp;  if conf.get_bool("no_report"):<br>-&nbsp; &nbsp; &nbsp; &nbsp; debug("Reporting disabled")<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Reporting disabled")<br>&nbsp; &nbsp; &nbsp; &nbsp;  return False<br> <br>&nbsp; &nbsp;  return True<br>@@ -70,7 +65,7 @@ def _report_model_usage(model, direction, success):<br>&nbsp; &nbsp;  model = "%s_%s" % (model.VENDOR, model.MODEL)<br>&nbsp; &nbsp;  data = "%s,%s,%s" % (model, direction, success)<br> <br>-&nbsp; &nbsp; debug("Reporting model usage: %s" % data)<br>+&nbsp; &nbsp; dprint("Reporting model usage: %s" % data)<br> <br>&nbsp; &nbsp;  proxy = xmlrpclib.ServerProxy(REPORT_URL)<br>&nbsp; &nbsp;  id = proxy.report_stats(CHIRP_VERSION,<br>@@ -84,7 +79,7 @@ def _report_model_usage(model, direction, success):<br> def _report_exception(stack):<br>&nbsp; &nbsp;  global ENABLED<br> <br>-&nbsp; &nbsp; debug("Reporting exception")<br>+&nbsp; &nbsp; dprint("Reporting exception")<br> <br>&nbsp; &nbsp;  proxy = xmlrpclib.ServerProxy(REPORT_URL)<br>&nbsp; &nbsp;  id = proxy.report_exception(CHIRP_VERSION,<br>@@ -98,7 +93,7 @@ def _report_exception(stack):<br> def _report_misc_error(module, data):<br>&nbsp; &nbsp;  global ENABLED<br> <br>-&nbsp; &nbsp; debug("Reporting misc error with %s" % module)<br>+&nbsp; &nbsp; dprint("Reporting misc error with %s" % module)<br> <br>&nbsp; &nbsp;  proxy = xmlrpclib.ServerProxy(REPORT_URL)<br>&nbsp; &nbsp;  id = proxy.report_misc_error(CHIRP_VERSION,<br>@@ -109,12 +104,12 @@ def _report_misc_error(module, data):<br>&nbsp; &nbsp;  return id != 0<br> <br> def _check_for_updates(callback):<br>-&nbsp; &nbsp; debug("Checking for updates")<br>+&nbsp; &nbsp; dprint("Checking for updates")<br>&nbsp; &nbsp;  proxy = xmlrpclib.ServerProxy(REPORT_URL)<br>&nbsp; &nbsp;  ver = proxy.check_for_updates(CHIRP_VERSION,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  platform.get_platform().os_version_string())<br> <br>-&nbsp; &nbsp; debug("Server reports version %s is latest" % ver)<br>+&nbsp; &nbsp; dprint("Server reports version %s is latest" % ver)<br>&nbsp; &nbsp;  callback(ver)<br>&nbsp; &nbsp;  return True<br> <br>@@ -128,7 +123,7 @@ class ReportThread(threading.Thread):<br>&nbsp; &nbsp; &nbsp; &nbsp;  try:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  return self.__func(*self.__args)<br>&nbsp; &nbsp; &nbsp; &nbsp;  except Exception, e:<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; debug("Failed to report: %s" % e)<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Failed to report: %s" % e)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  return False<br>&nbsp; &nbsp; &nbsp; &nbsp;  <br>&nbsp; &nbsp;  def run(self):<br>@@ -139,7 +134,7 @@ class ReportThread(threading.Thread):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  ENABLED = False<br>&nbsp; &nbsp; &nbsp; &nbsp;  elif (time.time() - start) &gt; 15:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  # Reporting took too long<br>-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; debug("Time to report was %.2f sec -- Disabling" % \<br>+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dprint("Time to report was %.2f sec -- Disabling" % \<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  (time.time()-start))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  ENABLED = False<br> <br>@@ -151,13 +146,13 @@ def dispatch_thread(func, *args):<br> <br>&nbsp; &nbsp;  # If reporting is disabled or failing, bail<br>&nbsp; &nbsp;  if not should_report():<br>-&nbsp; &nbsp; &nbsp; &nbsp; debug("Reporting is disabled")<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Reporting is disabled")<br>&nbsp; &nbsp; &nbsp; &nbsp;  return<br> <br>&nbsp; &nbsp;  # If the time between now and the last report is less than 5 seconds, bail<br>&nbsp; &nbsp;  delta = time.time() - LAST<br>&nbsp; &nbsp;  if delta &lt; 5 and func == LAST_TYPE:<br>-&nbsp; &nbsp; &nbsp; &nbsp; debug("Throttling...")<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Throttling...")<br>&nbsp; &nbsp; &nbsp; &nbsp;  return<br> <br>&nbsp; &nbsp;  LAST = time.time()<br>@@ -165,7 +160,7 @@ def dispatch_thread(func, *args):<br> <br>&nbsp; &nbsp;  # If there are already too many threads running, bail<br>&nbsp; &nbsp;  if not THREAD_SEM.acquire(False):<br>-&nbsp; &nbsp; &nbsp; &nbsp; debug("Too many threads already running")<br>+&nbsp; &nbsp; &nbsp; &nbsp; dprint("Too many threads already running")<br>&nbsp; &nbsp; &nbsp; &nbsp;  return<br> <br>&nbsp; &nbsp;  t = ReportThread(func, *args)<br>-- <br>1.9.1<br><br>_______________________________________________<br>chirp_devel mailing list<br><a ymailto="mailto:chirp_devel@intrepid.danplanet.com" href="mailto:chirp_devel@intrepid.danplanet.com">chirp_devel@intrepid.danplanet.com</a><br><a href="http://intrepid.danplanet.com/mailman/listinfo/chirp_devel" target="_blank">http://intrepid.danplanet.com/mailman/listinfo/chirp_devel</a><br>Developer docs: <a href="http://chirp.danplanet.com/projects/chirp/wiki/Developers" target="_blank">http://chirp.danplanet.com/projects/chirp/wiki/Developers</a><br><br><br></div> </div> </div>  </div>