[chirp_devel] [PATCH] [UV-5R] "radio refused to send block code 0x1ec0" patch
Jim Unroe
Sat Mar 14 15:04:39 PDT 2015
I currently cannot run the "run_tests" script. Sorry.
Jim
On Sat, Mar 14, 2015 at 6:03 PM, Jim Unroe <rock.unroe at gmail.com> wrote:
> # HG changeset patch
> # User Jim Unroe <rock.unroe at gmail.com>
> # Date 1426370486 14400
> # Node ID ecba19b26da64ecd03be7d47e04d1ad21d1ae08f
> # Parent c9c9128ca29ea21f54249788a9c0e47c9d5fbdc4
> [UV-5R] "radio refused to send block code 0x1ec0" patch
>
> Fix downloading/uploading issue for UV-5R.
>
> Mathieu Rozon created the original patch.
> Updated by Jim Unroe for better uploading compatiblilty.
>
> Fixes #2317
>
> diff -r c9c9128ca29e -r ecba19b26da6 chirp/drivers/uv5r.py
> --- a/chirp/drivers/uv5r.py Thu Mar 12 09:49:32 2015 +0100
> +++ b/chirp/drivers/uv5r.py Sat Mar 14 18:01:26 2015 -0400
> @@ -442,10 +442,16 @@
> return ident
>
>
> -def _read_block(radio, start, size):
> +def _read_block(radio, start, size, first_command = False):
> msg = struct.pack(">BHB", ord("S"), start, size)
> radio.pipe.write(msg)
>
> + if(first_command == False):
> + ack = radio.pipe.read(1)
> + if ack != "\x06":
> + raise errors.RadioError("Radio refused to send second block 0x%04x" %
> + start)
> +
> answer = radio.pipe.read(4)
> if len(answer) != 4:
> raise errors.RadioError("Radio refused to send block 0x%04x" % start)
> @@ -464,28 +470,25 @@
> raise errors.RadioError("Radio sent incomplete block 0x%04x" % start)
>
> radio.pipe.write("\x06")
> -
> - ack = radio.pipe.read(1)
> - if ack != "\x06":
> - raise errors.RadioError("Radio refused to send block 0x%04x" % start)
> + time.sleep(0.005)
>
> return chunk
>
>
> def _get_radio_firmware_version(radio):
> if radio.MODEL == "BJ-UV55":
> - block = _read_block(radio, 0x1FF0, 0x40)
> + block = _read_block(radio, 0x1FF0, 0x40, True)
> version = block[0:6]
> else:
> - block1 = _read_block(radio, 0x1EC0, 0x40)
> - block2 = _read_block(radio, 0x1F00, 0x40)
> + block1 = _read_block(radio, 0x1EC0, 0x40, True)
> + block2 = _read_block(radio, 0x1F00, 0x40, False)
> block = block1 + block2
> version = block[48:62]
> return version
>
>
> def _get_radio_special_block(radio):
> - block = _read_block(radio, 0xCF0, 0x40)
> + block = _read_block(radio, 0xCF0, 0x40, False)
> special_block = block[2:9]
> return special_block
>
> @@ -517,14 +520,14 @@
> # Main block
> LOG.debug("downloading main block...")
> for i in range(0, 0x1800, 0x40):
> - data += _read_block(radio, i, 0x40)
> + data += _read_block(radio, i, 0x40, False)
> _do_status(radio, i)
> _do_status(radio, radio.get_memsize())
> LOG.debug("done.")
> LOG.debug("downloading aux block...")
> # Auxiliary block starts at 0x1ECO (?)
> for i in range(0x1EC0, 0x2000, 0x40):
> - data += _read_block(radio, i, 0x40)
> + data += _read_block(radio, i, 0x40, False)
> LOG.debug("done.")
> return memmap.MemoryMap(data)
>
> @@ -532,6 +535,7 @@
> def _send_block(radio, addr, data):
> msg = struct.pack(">BHB", ord("X"), addr, len(data))
> radio.pipe.write(msg + data)
> + time.sleep(0.05)
>
> ack = radio.pipe.read(1)
> if ack != "\x06":
More information about the chirp_devel
mailing list