commit 7dd7918a305c543d60f82dd59dbcc5fda17721e3
parent 44b0fab4c07d1a1b0925c366a5cb7a49424d1559
Author: ThomasV <thomasv1@gmx.de>
Date:   Fri, 19 Sep 2014 16:24:00 +0200
Merge pull request #848 from btchip/firmwareupdate
Firmwareupdate
Diffstat:
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/plugins/btchipwallet.py b/plugins/btchipwallet.py
@@ -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
@@ -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:
@@ -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