From 0e3f55b4798bb678dace5d2c92e584c4268a7c08 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Tue, 2 Nov 2010 12:23:03 +0900 Subject: [PATCH] DfuSe: support verify of STBee Mini --- tool/dfuse.py | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/tool/dfuse.py b/tool/dfuse.py index 773845b..ba1293f 100755 --- a/tool/dfuse.py +++ b/tool/dfuse.py @@ -107,7 +107,7 @@ class DFU_STM32: raise ValueError, "Wrong interface class" if interface.interfaceSubClass != DFU_SUBCLASS: raise ValueError, "Wrong interface sub class" - + self.__protocol = interface.interfaceProtocol self.__devhandle = device.open() self.__devhandle.setConfiguration(configuration) self.__devhandle.claimInterface(interface) @@ -248,19 +248,23 @@ class DFU_STM32: sys.stdout.flush() addr += 1024 i += 1 - # 0-length write at the end - self.ll_download_block(self.__blocknum, None) - s = self.ll_get_status() - if s[4] == STATE_DFU_MANIFEST: - time.sleep(1) - try: - s = self.ll_get_status() - except: + if self.__protocol == DFU_STM32PROTOCOL_0: + # 0-length write at the end + self.ll_download_block(self.__blocknum, None) + s = self.ll_get_status() + if s[4] == STATE_DFU_MANIFEST: + time.sleep(1) + try: + s = self.ll_get_status() + except: + self.__devhandle.reset() + elif s[4] == STATE_DFU_MANIFEST_WAIT_RESET: self.__devhandle.reset() - elif s[4] == STATE_DFU_MANIFEST_WAIT_RESET: - self.__devhandle.reset() - elif s[4] != STATE_DFU_IDLE: - raise ValueError, "write failed (%d)." % s[4] + elif s[4] != STATE_DFU_IDLE: + raise ValueError, "write failed (%d)." % s[4] + else: + self.ll_clear_status() + self.ll_clear_status() sys.stdout.write("\n") sys.stdout.flush()