From 0c5ce99c4f07836ab35fb0675a63c8cd4341a72c Mon Sep 17 00:00:00 2001 From: kos Date: Wed, 4 Jan 2012 19:33:09 +0900 Subject: [PATCH] change plugins code. - fpgaupgrade/firmwareupgrade : cpp -> python. --- .../Plugins/SystemPlugins/FPGAUpgrade/Makefile.am | 4 +- .../Plugins/SystemPlugins/FPGAUpgrade/_fpga.so | Bin 76456 -> 0 bytes .../Plugins/SystemPlugins/FPGAUpgrade/fpga.py | 103 ------------- .../Plugins/SystemPlugins/FPGAUpgrade/plugin.py | 106 ++++++++++++- .../SystemPlugins/FirmwareUpgrade/Makefile.am | 2 - .../Plugins/SystemPlugins/FirmwareUpgrade/_fu.so | Bin 51700 -> 0 bytes .../Plugins/SystemPlugins/FirmwareUpgrade/fu.py | 92 ----------- .../SystemPlugins/FirmwareUpgrade/plugin.py | 169 ++++++++++++++++++++- 8 files changed, 271 insertions(+), 205 deletions(-) delete mode 100644 lib/python/Plugins/SystemPlugins/FPGAUpgrade/_fpga.so delete mode 100644 lib/python/Plugins/SystemPlugins/FPGAUpgrade/fpga.py delete mode 100644 lib/python/Plugins/SystemPlugins/FirmwareUpgrade/_fu.so delete mode 100644 lib/python/Plugins/SystemPlugins/FirmwareUpgrade/fu.py diff --git a/lib/python/Plugins/SystemPlugins/FPGAUpgrade/Makefile.am b/lib/python/Plugins/SystemPlugins/FPGAUpgrade/Makefile.am index 36e60c8..52ab77a 100755 --- a/lib/python/Plugins/SystemPlugins/FPGAUpgrade/Makefile.am +++ b/lib/python/Plugins/SystemPlugins/FPGAUpgrade/Makefile.am @@ -5,6 +5,4 @@ SUBDIRS = meta install_PYTHON = \ __init__.py \ plugin.py \ - fpga.py \ - fpga.conf \ - _fpga.so + fpga.conf diff --git a/lib/python/Plugins/SystemPlugins/FPGAUpgrade/_fpga.so b/lib/python/Plugins/SystemPlugins/FPGAUpgrade/_fpga.so deleted file mode 100644 index b031d6f4455a30f9d81ec234d47c70c765e9ce2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76456 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Ξ6kKEH`0d0(11ewC5Sr^8f=7ieh!fg=u>&7Pr8Qn z(WuJ4Ke;=EvZk2F=k!Q5ujIB^N|oHQ>(OlEwgoW1iXpNJ=>_ZZLd56R_^b z5!i75(BSU;l%Ao)Kmz13 zMtH}45AA5UJFhV*&fP}-%_pW(@I6H$n|A9Y%!S2KFf-n6Of(kh?;nD2*@^r_V_t&! zB5hup`uc2MiurDCUYdL#H!qQ2*M)>NG$m2%kRB-grP3tQcQiB=_OksR_7&eF#iv_~ zp=*)Ztl zvy<7+MY58$O?E*yMtj3O;c#ecduQkS!W$mktUvmh)o(?;bqz{zVgvEi{_NMFwKg(Gwv?phH>?x0vo+G) z8*9I-n^9g*vzbaV@;a2wDppRJJbBc#6>xtHUre@py*{yf1Ku&uOCxo)?&qc6Kb%Z~ zkrZPp-GH7aK;<0jXwcms(54sH{dcHpXtjig2a|of2ch4#ZBr}h086aB%Nqg9;iHP8 zUg8x2q$$G&3lu*FygvC*q(2-T8pcVu+=8!c=LStxV{p~Z<@YP9+QiWLAe+n9mXl_4 zoZs{1*X6qteQ|6C_M#|STqLu-QPz`^C^$*TZfhdO2V?t8UYrdE7Zn@41Ou-!-ogZFi8 zYH1CxT@%3fjkPR&|-VQZ*eWW`Kl{akEa%g`CG+UU8L3W?H z@1vW-;qDPk@8L)y8aBprFxa|%`}&qm;Rc+8wn#i^v@>a%y0-0yJ7GYt0palO0emGJ zd$t6B{2=_^z2U9q+w7{bO8-auLwil%w{H)xThqv{XlA*Z*)lZLuaZ=C;T@aRPnNVc zv_r?Lv(U*@Vz4{D-{$1LL|-aqCxEqvI94PM1y`kPS}XP))9rg3 z8t%runrl>7SQ>hU+Vds|QDp*|UvSCG*HzxHei$a(-!Ns%2vSdX|4`E6-&zbdNkYig z0+Z|4TJWVnLh{qh_(B+6Q-eHC70#zN&ZlH5(Vwr9;@Zs^?uN556+;z9vzb{0-L9u& z!&-ZtZx3~Aw@c?H{rf^j{h<`qAIPu`Sy9c-O#IqSUw2OMM1)~`884dV;a2_ADKe52 zz3`^ww&7hI8Fs?e<(^cmKTl>tN?f&28A;fpsp$!r<8%NzM!gIn9c`tUWfccke~SmZ ztzRwyT6o9czDEtMtdcXGy*$Z}9>BvD5XwBL!c+;h) ze`uc!R|kHjBdlF@YU%9Gs{&(%7hbZ>qmFTU@)t@Qm`ec3`deH+d$lA5VR=yCnap96WIktpQm!5k0VjLbU3Dj z+0wJv9dC{7v(= (2,6,0): - def swig_import_helper(): - from os.path import dirname - import imp - fp = None - try: - fp, pathname, description = imp.find_module('_fpga', [dirname(__file__)]) - except ImportError: - import _fpga - return _fpga - if fp is not None: - try: - _mod = imp.load_module('_fpga', fp, pathname, description) - finally: - fp.close() - return _mod - _fpga = swig_import_helper() - del swig_import_helper -else: - import _fpga -del version_info -try: - _swig_property = property -except NameError: - pass # Python < 2.2 doesn't have 'property'. -def _swig_setattr_nondynamic(self,class_type,name,value,static=1): - if (name == "thisown"): return self.this.own(value) - if (name == "this"): - if type(value).__name__ == 'SwigPyObject': - self.__dict__[name] = value - return - method = class_type.__swig_setmethods__.get(name,None) - if method: return method(self,value) - if (not static) or hasattr(self,name): - self.__dict__[name] = value - else: - raise AttributeError("You cannot add attributes to %s" % self) - -def _swig_setattr(self,class_type,name,value): - return _swig_setattr_nondynamic(self,class_type,name,value,0) - -def _swig_getattr(self,class_type,name): - if (name == "thisown"): return self.this.own() - method = class_type.__swig_getmethods__.get(name,None) - if method: return method(self) - raise AttributeError(name) - -def _swig_repr(self): - try: strthis = "proxy of " + self.this.__repr__() - except: strthis = "" - return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) - -try: - _object = object - _newclass = 1 -except AttributeError: - class _object : pass - _newclass = 0 - - -DP_NO_ACTION_FOUND = _fpga.DP_NO_ACTION_FOUND -DP_DEVICE_INFO_ACTION_CODE = _fpga.DP_DEVICE_INFO_ACTION_CODE -DP_READ_IDCODE_ACTION_CODE = _fpga.DP_READ_IDCODE_ACTION_CODE -DP_ERASE_ACTION_CODE = _fpga.DP_ERASE_ACTION_CODE -DP_PROGRAM_ACTION_CODE = _fpga.DP_PROGRAM_ACTION_CODE -DP_VERIFY_ACTION_CODE = _fpga.DP_VERIFY_ACTION_CODE -NO_SRC_FILE_PATH = _fpga.NO_SRC_FILE_PATH -NO_TAR_DEVICE_PATH = _fpga.NO_TAR_DEVICE_PATH -FAIL_OPEN_SRC_FILE = _fpga.FAIL_OPEN_SRC_FILE -ZERO_SRC_FILE_SIZE = _fpga.ZERO_SRC_FILE_SIZE -FAIL_OPEN_DEVICE = _fpga.FAIL_OPEN_DEVICE -ERROR_FILE_SIZE = _fpga.ERROR_FILE_SIZE -ERROR_SET_ACTION_CODE = _fpga.ERROR_SET_ACTION_CODE -ERROR_PROGRAMMING = _fpga.ERROR_PROGRAMMING -class Fpga(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, Fpga, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, Fpga, name) - __repr__ = _swig_repr - def __init__(self): - this = _fpga.new_Fpga() - try: self.this.append(this) - except: self.this = this - __swig_destroy__ = _fpga.delete_Fpga - __del__ = lambda self : None; - def get_interval(self): return _fpga.Fpga_get_interval(self) - def get_error_msg(self, *args): return _fpga.Fpga_get_error_msg(self, *args) - def fpga_upgrade(self, *args): return _fpga.Fpga_fpga_upgrade(self, *args) - def get_status(self): return _fpga.Fpga_get_status(self) -Fpga_swigregister = _fpga.Fpga_swigregister -Fpga_swigregister(Fpga) - - - diff --git a/lib/python/Plugins/SystemPlugins/FPGAUpgrade/plugin.py b/lib/python/Plugins/SystemPlugins/FPGAUpgrade/plugin.py index 76cf06b..14b5087 100644 --- a/lib/python/Plugins/SystemPlugins/FPGAUpgrade/plugin.py +++ b/lib/python/Plugins/SystemPlugins/FPGAUpgrade/plugin.py @@ -1,6 +1,5 @@ -import os +import os, fcntl, thread -import fpga from enigma import eTimer from urllib import urlretrieve @@ -21,6 +20,107 @@ from Components.ActionMap import ActionMap from Components.PluginComponent import plugins from Components.Sources.StaticText import StaticText +STATUS_READY = 0 +STATUS_DONE = 1 +STATUS_ERROR = 2 +STATUS_PREPARED = 3 +STATUS_PROGRAMMING = 4 + +class FPGAUpgradeCore() : + status = STATUS_READY + errmsg = '' + callcount = 0 + MAX_CALL_COUNT = 1500 + def __init__(self, firmwarefile, devicefile): + print '[FPGAUpgrade]' + self.devicefile = devicefile + self.firmwarefile = firmwarefile + + def doUpgrade(self): + firmware,device = None,None + def closefpga(fp, fd): + if fd is not None: os.close(fd) + if fp is not None: fp.close() + try: + size = os.path.getsize(self.firmwarefile) + if size == 0: raise Exception, 'data_size is zero' + #print '[FPGAUpgradeCore] data_size :',size + + firmware = open(self.firmwarefile, 'rb') + device = os.open(self.devicefile, os.O_RDWR) + #print '[FPGAUpgradeCore] open >> [ok]' + + rc = fcntl.ioctl(device, 0, size) + if rc < 0: raise Exception, 'fail to set size : %d'%(rc) + #print '[FPGAUpgradeCore] set size >> [ok]' + + rc = fcntl.ioctl(device, 2, 5) + if rc < 0: raise Exception, 'fail to set programming mode : %d'%(rc) + #print '[FPGAUpgradeCore] programming mode >> [ok]' + self.status = STATUS_PREPARED + + while True: + data = firmware.read(1024) + if data == '': break + os.write(device, data) + #print '[FPGAUpgradeCore] write data >> [ok]' + + self.status = STATUS_PROGRAMMING + rc = fcntl.ioctl(device, 1, 0) + if rc < 0: raise Exception, 'fail to programming : %d'%(rc) + #print '[FPGAUpgradeCore] upgrade done.' + if self.callcount < 100: raise Exception, 'wrong fpga file.' + except Exception, msg: + self.errmsg = msg + print '[FPGAUpgradeCore] ERROR >>',msg + closefpga(firmware, device) + return STATUS_ERROR + closefpga(firmware, device) + return STATUS_DONE + + def upgradeMain(self): + self.status = STATUS_READY + self.status = self.doUpgrade() + if self.status == STATUS_DONE: + print '[FPGAUpgrade] upgrade done.' + elif self.status == STATUS_ERROR: + print '[FPGAUpgrade] occur error.' + else: print '[FPGAUpgrade] occur unknown error.' + +class FPGAUpgradeManager: + fu = None + def get_interval(self): + return 200 + + def fpga_upgrade(self, datafile, device): + self.fu = FPGAUpgradeCore(firmwarefile=datafile, devicefile=device) + thread.start_new_thread(self.fu.upgradeMain, ()) + + def checkError(self): + if self.fu.status == STATUS_ERROR: + self.fu.callcount = 0 + return True + return False + + def get_status(self): + if self.fu.status == STATUS_READY: + return 0 + elif self.fu.status == STATUS_ERROR: + return -1 + elif self.fu.status == STATUS_PREPARED: + return 2 + elif self.fu.status == STATUS_PROGRAMMING: + self.fu.callcount += 1 + ret = (self.fu.callcount * 100) / self.fu.MAX_CALL_COUNT + 2 + if ret >= 100: ret = 99 + #print "callcount : [%d]"%(self.fu.callcount); + return ret + elif self.fu.status == STATUS_DONE: + return 100 + + def get_error_msg(self, errno, errmsg): + return str(self.fu.errmsg) + class UpgradeStatus(Screen): skin = """ @@ -159,7 +259,7 @@ class FPGAUpgrade(Screen): self.DOWNLOAD_FILE_NAME = 'TS_PRO.dat' self.DOWNLOAD_URL = '' self.doLoadConf() - self.FPGA = fpga.Fpga() + self.FPGA = FPGAUpgradeManager() print self.DEVICE_LIST print self.DOWNLOAD_TAR_PATH print self.DOWNLOAD_FILE_NAME diff --git a/lib/python/Plugins/SystemPlugins/FirmwareUpgrade/Makefile.am b/lib/python/Plugins/SystemPlugins/FirmwareUpgrade/Makefile.am index be62e85..e47942c 100644 --- a/lib/python/Plugins/SystemPlugins/FirmwareUpgrade/Makefile.am +++ b/lib/python/Plugins/SystemPlugins/FirmwareUpgrade/Makefile.am @@ -3,7 +3,5 @@ installdir = $(pkglibdir)/python/Plugins/SystemPlugins/FirmwareUpgrade SUBDIRS = meta install_PYTHON = __init__.py \ - fu.py \ - _fu.so \ plugin.py diff --git a/lib/python/Plugins/SystemPlugins/FirmwareUpgrade/_fu.so b/lib/python/Plugins/SystemPlugins/FirmwareUpgrade/_fu.so deleted file mode 100644 index c4c34bea7d80f2c1fa06e8a7cf0b312b232f48ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51700 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 diff --git a/lib/python/Plugins/SystemPlugins/FirmwareUpgrade/fu.py b/lib/python/Plugins/SystemPlugins/FirmwareUpgrade/fu.py deleted file mode 100644 index 1cc0778..0000000 --- a/lib/python/Plugins/SystemPlugins/FirmwareUpgrade/fu.py +++ /dev/null @@ -1,92 +0,0 @@ -# This file was automatically generated by SWIG (http://www.swig.org). -# Version 1.3.39 -# -# Do not make changes to this file unless you know what you are doing--modify -# the SWIG interface file instead. -# This file is compatible with both classic and new-style classes. - -from sys import version_info -if version_info >= (2,6,0): - def swig_import_helper(): - from os.path import dirname - import imp - fp = None - try: - fp, pathname, description = imp.find_module('_fu', [dirname(__file__)]) - except ImportError: - import _fu - return _fu - if fp is not None: - try: - _mod = imp.load_module('_fu', fp, pathname, description) - finally: - fp.close() - return _mod - _fu = swig_import_helper() - del swig_import_helper -else: - import _fu -del version_info -try: - _swig_property = property -except NameError: - pass # Python < 2.2 doesn't have 'property'. -def _swig_setattr_nondynamic(self,class_type,name,value,static=1): - if (name == "thisown"): return self.this.own(value) - if (name == "this"): - if type(value).__name__ == 'SwigPyObject': - self.__dict__[name] = value - return - method = class_type.__swig_setmethods__.get(name,None) - if method: return method(self,value) - if (not static) or hasattr(self,name): - self.__dict__[name] = value - else: - raise AttributeError("You cannot add attributes to %s" % self) - -def _swig_setattr(self,class_type,name,value): - return _swig_setattr_nondynamic(self,class_type,name,value,0) - -def _swig_getattr(self,class_type,name): - if (name == "thisown"): return self.this.own() - method = class_type.__swig_getmethods__.get(name,None) - if method: return method(self) - raise AttributeError(name) - -def _swig_repr(self): - try: strthis = "proxy of " + self.this.__repr__() - except: strthis = "" - return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) - -try: - _object = object - _newclass = 1 -except AttributeError: - class _object : pass - _newclass = 0 - - -class FU(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, FU, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, FU, name) - __repr__ = _swig_repr - def __init__(self): - this = _fu.new_FU() - try: self.this.append(this) - except: self.this = this - def getStatus(self): return _fu.FU_getStatus(self) - def getInterval(self): return _fu.FU_getInterval(self) - def checkError(self): return _fu.FU_checkError(self) - def getErrorMessage(self, *args): return _fu.FU_getErrorMessage(self, *args) - def startUpgrade(self, *args): return _fu.FU_startUpgrade(self, *args) - def getDataPath(self): return _fu.FU_getDataPath(self) - def getDevicePath(self): return _fu.FU_getDevicePath(self) - __swig_destroy__ = _fu.delete_FU - __del__ = lambda self : None; -FU_swigregister = _fu.FU_swigregister -FU_swigregister(FU) - - - diff --git a/lib/python/Plugins/SystemPlugins/FirmwareUpgrade/plugin.py b/lib/python/Plugins/SystemPlugins/FirmwareUpgrade/plugin.py index 0e1ec25..0181fac 100644 --- a/lib/python/Plugins/SystemPlugins/FirmwareUpgrade/plugin.py +++ b/lib/python/Plugins/SystemPlugins/FirmwareUpgrade/plugin.py @@ -43,6 +43,172 @@ if os.path.exists("/proc/stb/info/vumodel"): "fpga" : ["http://archive.vuplus.com/download/fpga", "fpga.file", "/dev/fpga_dp;/dev/misc/dp;"] } +import os, fcntl, thread +STATUS_READY = 0 +STATUS_DONE = 1 +STATUS_ERROR = 2 +STATUS_PREPARED = 3 +STATUS_PROGRAMMING = 4 +STATUS_RETRY_UPGRADE = 5 + +class FPUpgradeCore() : + status = STATUS_READY + errmsg = '' + MAX_CALL_COUNT = 120 + def __init__(self, firmwarefile, devicefile): + self.devicefile = devicefile + self.firmwarefile = firmwarefile + + def doUpgrade(self): + firmware,device = None,None + def closefpga(fp, fd): + if fd is not None: os.close(fd) + if fp is not None: fp.close() + try: + size = os.path.getsize(self.firmwarefile) + if size == 0: raise Exception, 'data_size is zero' + #print '[FPUpgradeCore] data_size :',size + + for xx in range(3): + self.callcount = 0 + self.status = STATUS_READY + + firmware = open(self.firmwarefile, 'rb') + device = os.open(self.devicefile, os.O_RDWR) + #print '[FPUpgradeCore] open >> [ok]' + + rc = fcntl.ioctl(device, 0, size) + if rc < 0: raise Exception, 'fail to set size : %d'%(rc) + #print '[FPUpgradeCore] set size >> [ok]' + self.status = STATUS_PREPARED + + while True: + data = firmware.read(1024) + if data == '': break + os.write(device, data) + #print '[FPUpgradeCore] write data >> [ok]' + + self.status = STATUS_PROGRAMMING + rc = fcntl.ioctl(device, 1, 0) + if rc == 0: break + if xx == 2: raise Exception, 'fail to upgrade : %d'%(rc) + self.errmsg = 'fail to upgrade, retry..' + self.status = STATUS_RETRY_UPGRADE + closefpga(firmware, device) + #print '[FPUpgradeCore] upgrade done.' + if self.callcount < 20: raise Exception, 'wrong fpga file.' + except Exception, msg: + self.errmsg = msg + print '[FPUpgradeCore] ERROR >>',msg + closefpga(firmware, device) + return STATUS_ERROR + return STATUS_DONE + + def upgradeMain(self): + self.status = STATUS_READY + self.status = self.doUpgrade() + if self.status == STATUS_DONE: + print 'upgrade done.' + elif self.status == STATUS_ERROR: + print 'error!!' + else: print 'unknown.' + +class FPGAUpgradeCore() : + status = STATUS_READY + errmsg = '' + callcount = 0 + MAX_CALL_COUNT = 1500 + def __init__(self, firmwarefile, devicefile): + print '[FPGAUpgrade]' + self.devicefile = devicefile + self.firmwarefile = firmwarefile + + def doUpgrade(self): + firmware,device = None,None + def closefpga(fp, fd): + if fd is not None: os.close(fd) + if fp is not None: fp.close() + try: + size = os.path.getsize(self.firmwarefile) + if size == 0: raise Exception, 'data_size is zero' + #print '[FPGAUpgradeCore] data_size :',size + + firmware = open(self.firmwarefile, 'rb') + device = os.open(self.devicefile, os.O_RDWR) + #print '[FPGAUpgradeCore] open >> [ok]' + + rc = fcntl.ioctl(device, 0, size) + if rc < 0: raise Exception, 'fail to set size : %d'%(rc) + #print '[FPGAUpgradeCore] set size >> [ok]' + + rc = fcntl.ioctl(device, 2, 5) + if rc < 0: raise Exception, 'fail to set programming mode : %d'%(rc) + #print '[FPGAUpgradeCore] programming mode >> [ok]' + self.status = STATUS_PREPARED + + while True: + data = firmware.read(1024) + if data == '': break + os.write(device, data) + #print '[FPGAUpgradeCore] write data >> [ok]' + + self.status = STATUS_PROGRAMMING + rc = fcntl.ioctl(device, 1, 0) + if rc < 0: raise Exception, 'fail to programming : %d'%(rc) + #print '[FPGAUpgradeCore] upgrade done.' + if self.callcount < 20: raise Exception, 'wrong fpga file.' + except Exception, msg: + self.errmsg = msg + print '[FPGAUpgradeCore] ERROR >>',msg + closefpga(firmware, device) + return STATUS_ERROR + closefpga(firmware, device) + return STATUS_DONE + + def upgradeMain(self): + self.status = STATUS_READY + self.status = self.doUpgrade() + if self.status == STATUS_DONE: + print '[FPGAUpgrade] upgrade done.' + elif self.status == STATUS_ERROR: + print '[FPGAUpgrade] occur error.' + else: print '[FPGAUpgrade] occur unknown error.' + +class FirmwareUpgradeManager: + fu = None + def getInterval(self): + return 200 + + def startUpgrade(self, datafile, device, firmware): + if firmware == 'fpga': + self.fu = FPGAUpgradeCore(firmwarefile=datafile, devicefile=device) + elif firmware == 'fp': + self.fu = FPUpgradeCore(firmwarefile=datafile, devicefile=device) + thread.start_new_thread(self.fu.upgradeMain, ()) + + def checkError(self): + if self.fu.status == STATUS_ERROR: + self.fu.callcount = 0 + return True + return False + + def getStatus(self): + if self.fu.status in (STATUS_READY, STATUS_ERROR): + return 0 + elif self.fu.status == STATUS_PREPARED: + return 2 + elif self.fu.status == STATUS_PROGRAMMING: + self.fu.callcount += 1 + ret = (self.fu.callcount * 100) / self.fu.MAX_CALL_COUNT + 2 + if ret >= 100: ret = 99 + #print "callcount : [%d]"%(self.fu.callcount); + return ret + elif self.fu.status == STATUS_DONE: + return 100 + + def getErrorMessage(self, errno, errmsg): + return str(self.fu.errmsg) + class UpgradeStatus(Screen): skin = """ @@ -78,8 +244,7 @@ class UpgradeStatus(Screen): self.setTitle(firmware.upper() + " Upgrade Status") - import fu - self.FU = fu.FU() + self.FU = FirmwareUpgradeManager() self.old_status = 0 self.status_exit = None -- 2.7.4