tMerge pull request #848 from btchip/firmwareupdate - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 7dd7918a305c543d60f82dd59dbcc5fda17721e3 DIR parent 44b0fab4c07d1a1b0925c366a5cb7a49424d1559 HTML Author: ThomasV <thomasv1@gmx.de> Date: Fri, 19 Sep 2014 16:24:00 +0200 Merge pull request #848 from btchip/firmwareupdate Firmwareupdate Diffstat: M plugins/btchipwallet.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) --- DIR diff --git a/plugins/btchipwallet.py b/plugins/btchipwallet.py t@@ -27,6 +27,7 @@ try: from btchip.btchipUtils import compress_public_key,format_transaction, get_regular_input_script from btchip.bitcoinTransaction import bitcoinTransaction from btchip.btchipPersoWizard import StartBTChipPersoDialog + from btchip.btchipFirmwareWizard import checkFirmware, updateFirmware from btchip.btchipException import BTChipException BTCHIP = True BTCHIP_DEBUG = False t@@ -143,12 +144,16 @@ class BTChipWallet(NewWallet): d.setWaitImpl(DongleWaitQT(d)) self.client = btchip(d) firmware = self.client.getFirmwareVersion()['version'].split(".") - if int(firmware[0]) <> 1 or int(firmware[1]) <> 4: - aborted = True - raise Exception("Unsupported firmware version") - if int(firmware[2]) < 9: - aborted = True - raise Exception("Please update your firmware - 1.4.9 or higher is necessary") + if (not checkFirmware(firmware)) or (int(firmware[0]) <> 1) or (int(firmware[1]) <> 4) or (int(firmware[2]) < 9): + d.close() + try: + updateFirmware() + except Exception, e: + aborted = True + raise e + d = getDongle(BTCHIP_DEBUG) + d.setWaitImpl(DongleWaitQT(d)) + self.client = btchip(d) try: self.client.getOperationMode() except BTChipException, e: t@@ -194,7 +199,7 @@ class BTChipWallet(NewWallet): pass self.client = None if not aborted: - raise Exception("Could not connect to your BTChip dongle. Please verify access permissions or PIN") + raise Exception("Could not connect to your BTChip dongle. Please verify access permissions, PIN, or unplug the dongle and plug it again") else: raise e self.client.bad = False