URI: 
       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