DfuSe: support verify of STBee Mini

This commit is contained in:
NIIBE Yutaka
2010-11-02 12:23:03 +09:00
parent 4d6ba8afba
commit 0e3f55b479

View File

@@ -107,7 +107,7 @@ class DFU_STM32:
raise ValueError, "Wrong interface class" raise ValueError, "Wrong interface class"
if interface.interfaceSubClass != DFU_SUBCLASS: if interface.interfaceSubClass != DFU_SUBCLASS:
raise ValueError, "Wrong interface sub class" raise ValueError, "Wrong interface sub class"
self.__protocol = interface.interfaceProtocol
self.__devhandle = device.open() self.__devhandle = device.open()
self.__devhandle.setConfiguration(configuration) self.__devhandle.setConfiguration(configuration)
self.__devhandle.claimInterface(interface) self.__devhandle.claimInterface(interface)
@@ -248,19 +248,23 @@ class DFU_STM32:
sys.stdout.flush() sys.stdout.flush()
addr += 1024 addr += 1024
i += 1 i += 1
# 0-length write at the end if self.__protocol == DFU_STM32PROTOCOL_0:
self.ll_download_block(self.__blocknum, None) # 0-length write at the end
s = self.ll_get_status() self.ll_download_block(self.__blocknum, None)
if s[4] == STATE_DFU_MANIFEST: s = self.ll_get_status()
time.sleep(1) if s[4] == STATE_DFU_MANIFEST:
try: time.sleep(1)
s = self.ll_get_status() try:
except: s = self.ll_get_status()
except:
self.__devhandle.reset()
elif s[4] == STATE_DFU_MANIFEST_WAIT_RESET:
self.__devhandle.reset() self.__devhandle.reset()
elif s[4] == STATE_DFU_MANIFEST_WAIT_RESET: elif s[4] != STATE_DFU_IDLE:
self.__devhandle.reset() raise ValueError, "write failed (%d)." % s[4]
elif s[4] != STATE_DFU_IDLE: else:
raise ValueError, "write failed (%d)." % s[4] self.ll_clear_status()
self.ll_clear_status()
sys.stdout.write("\n") sys.stdout.write("\n")
sys.stdout.flush() sys.stdout.flush()