# HG changeset patch # User Marco Filippi iz3gme.marco@gmail.com # Date 1389909601 -3600 # Node ID 5236e0423182974b1c7c8851105fa3f3fa1d173e # Parent fe6805f6f632016c4cf63fc3f6a75560533e5ae8 [ft8x7] Detect us driver used to clone non us radio Implement feature #1375
diff -r fe6805f6f632 -r 5236e0423182 chirp/ft817.py --- a/chirp/ft817.py Thu Jan 16 22:46:33 2014 +0100 +++ b/chirp/ft817.py Thu Jan 16 23:00:01 2014 +0100 @@ -294,7 +294,7 @@ 4. Press the [C] key ("RX" will appear on the LCD).""")) return rp
- def _read(self, block, blocknum): + def _read(self, block, blocknum, lastblock): for _i in range(0, 60): data = self.pipe.read(block+2) if data: @@ -309,7 +309,13 @@ checksum.get_calculated(data), blocknum)) data = data[1:block+1] # Chew away the block number and the checksum else: - raise Exception("Unable to read block %02X expected %i got %i" % + if lastblock and self._US_model: + raise Exception(_("Unable to read last block. " + "This often happens when the selected model is US " + "but the radio is a non-US one (or widebanded). " + "Please choose the correct model and try again.")) + else: + raise Exception("Unable to read block %02X expected %i got %i" % (blocknum, block+2, len(data)))
if os.getenv("CHIRP_DEBUG"): @@ -326,7 +332,8 @@ blocks = 0 status = chirp_common.Status() status.msg = _("Cloning from radio") - status.max = len(self._block_lengths) + 39 + nblocks = len(self._block_lengths) + 39 + status.max = nblocks for block in self._block_lengths: if blocks == 8: # repeated read of 40 block same size (memory area) @@ -334,7 +341,7 @@ else: repeat = 1 for _i in range(0, repeat): - data += self._read(block, blocks) + data += self._read(block, blocks, blocks == nblocks-1) self.pipe.write(chr(CMD_ACK)) blocks += 1 status.cur = blocks