# HG changeset patch # User Jim Unroe rock.unroe@gmail.com # Date 1474414440 14400 # Node ID 094e758be36b3c8c34aff852a2f9770f5773d65a # Parent a1b8b53606f6025fc1ad727331837cfc7759f178 [UV-5R] UV-82HP (An error has occurred, Unexpected response from radio)
The "ident" returned by the radios supported by the uv5r.py driver used to be static. The "ident" of the UV-82HP radio (and possibly other recent Baofeng radios) now changes based on the band limit settings. When setting a band limit to "1" or and value ending in "01" (101, 201, 301, etc.), the value ends up in the "ident" and is stripped by the code that was added to support the UV-6 with the longer 12 byte "ident".
This patch uses a different strategy to support the UV-6 with longer "ident" restoring the use of any selectable band limit value.
Bug #3987
diff -r a1b8b53606f6 -r 094e758be36b chirp/drivers/uv5r.py --- a/chirp/drivers/uv5r.py Sat Sep 10 11:34:01 2016 -0400 +++ b/chirp/drivers/uv5r.py Tue Sep 20 19:34:00 2016 -0400 @@ -426,26 +426,28 @@ # Ok, get the response ident = "" for i in range(1, 13): - response = serial.read(1) - # discard any bytes containing "\x01" and keep the rest - if response != "\x01": - ident += response + byte = serial.read(1) + response += byte # stop reading once the last byte ("\xdd") is encountered - if response == "\xdd": + if byte == "\xdd": break
# check if response is OK - if len(ident) != 8 or not ident.startswith("\xaa"): + if len(response) in [8, 12]: + # DEBUG + LOG.info("Valid response, got this:") + LOG.debug(util.hexprint(response)) + if len(response) == 12: + ident = response[0] + response[3] + response[5] + response[7:] + else: + ident = response + else: # bad response msg = "Unexpected response, got this:" - msg += util.hexprint(ident) + msg += util.hexprint(response) LOG.debug(msg) raise errors.RadioError("Unexpected response from radio.")
- # DEBUG - LOG.info("Valid response, got this:") - LOG.debug(util.hexprint(ident)) - serial.write("\x06") ack = serial.read(1) if ack != "\x06":