[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