Skip to content

Commit

Permalink
RTF-5 Can download image automatically when new board is connected #2.1
Browse files Browse the repository at this point in the history
- Extended more single var to list var for multiple boards support
  self.isUsbhidConnected
  self.usbhidToConnect

  self._retryToDetectUsbhidDevice()
  self.setPortSetupValue()
  self.adjustPortSetupValue()
  self.updatePortSetupValue()

Signed-off-by: Jay Heng <hengjie1989@foxmail.com>
  • Loading branch information
nxp-jay committed Jan 20, 2021
1 parent 6766374 commit 1e55f4f
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 41 deletions.
12 changes: 6 additions & 6 deletions src/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ def callbackSwitchSerialPortIndex( self, event ):
def _setUartUsbPort( self, deviceIndex=0 ):
usbIdList = self.getUsbid()
retryToDetectUsb = False
self.setPortSetupValue(self.connectStage[deviceIndex], usbIdList, retryToDetectUsb )
self.setPortSetupValue(deviceIndex, self.connectStage[deviceIndex], usbIdList, retryToDetectUsb )

def callbackSetUartPort( self, event ):
self._setUartUsbPort()
Expand Down Expand Up @@ -115,7 +115,7 @@ def _connectFailureHandler( self, deviceIndex=0 ):
self.connectStage[deviceIndex] = uidef.kConnectStage_Rom
self.updateConnectStatus('red')
usbIdList = self.getUsbid()
self.setPortSetupValue(self.connectStage[deviceIndex], usbIdList, False )
self.setPortSetupValue(deviceIndex, self.connectStage[deviceIndex], usbIdList, False )
self.setInfoStatus(uilang.kMsgLanguageContentDict['connectError_checkUsbCable'][self.languageIndex])

def _connectStateMachine( self, deviceIndex=0 ):
Expand All @@ -132,7 +132,7 @@ def _connectStateMachine( self, deviceIndex=0 ):
pass
isConnectionFailureOnce = False
while connectSteps:
if not self.updatePortSetupValue(retryToDetectUsb):
if not self.updatePortSetupValue(deviceIndex, retryToDetectUsb):
self._connectFailureHandler(deviceIndex)
if not isConnectionFailureOnce:
isConnectionFailureOnce = True
Expand All @@ -148,7 +148,7 @@ def _connectStateMachine( self, deviceIndex=0 ):
if self.jumpToFlashloader(deviceIndex):
self.connectStage[deviceIndex] = uidef.kConnectStage_Flashloader
usbIdList = self.getUsbid()
self.setPortSetupValue(self.connectStage[deviceIndex], usbIdList, True )
self.setPortSetupValue(deviceIndex, self.connectStage[deviceIndex], usbIdList, True )
else:
self.updateConnectStatus('red')
self.setInfoStatus(uilang.kMsgLanguageContentDict['connectError_failToJumpToFl'][self.languageIndex])
Expand Down Expand Up @@ -264,13 +264,13 @@ def _doUsbAutoAllInOneAction( self, deviceIndex=0 ):
self.resetMcuDevice(deviceIndex)
time.sleep(2)
self.connectStage[deviceIndex] = uidef.kConnectStage_Rom
self._setUartUsbPort(deviceIndex)
self.isUsbhidConnected[deviceIndex] = False
if self.isDymaticUsbDetection:
self.usbDevicePath[deviceIndex] = {'rom':None,
'flashloader':None
}
else:
self._setUartUsbPort(deviceIndex)
self.isUsbhidConnected = False
self.updateConnectStatus('black')
self.setDownloadOperationResults(1, successes)
self.usbDevicePath = []
Expand Down
69 changes: 34 additions & 35 deletions src/ui/uicore.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,8 @@ def __init__(self, parent):
self.setTargetSetupValue()
self.uartComPort = [None]
self.uartBaudrate = [None]
self.usbhidVid = None
self.usbhidPid = None
self.isUsbhidConnected = False
self.usbhidToConnect = [None] * 2
self.isUsbhidConnected = [False] * uidef.kMaxMfgBoards
self.usbhidToConnect = [[None] * 2] * uidef.kMaxMfgBoards
self.usbDevicePath = []
self._initPortSetupValue()
self._initMcuBoards()
Expand Down Expand Up @@ -178,28 +176,35 @@ def _initPortSetupValue( self ):
self.m_radioBtn_uart.SetValue(False)
self.m_radioBtn_usbhid.SetValue(True)
usbIdList = self.getUsbid()
self.setPortSetupValue(uidef.kConnectStage_Rom, usbIdList)
for i in range(uidef.kMaxMfgBoards):
self.setPortSetupValue(i, uidef.kConnectStage_Rom, usbIdList)

def task_doDetectUsbhid( self ):
while True:
if self.isUsbhidPortSelected:
self._retryToDetectUsbhidDevice(False)
deviceNum = 0
if self.isDymaticUsbDetection:
deviceNum = uidef.kMaxMfgBoards
else:
deviceNum = 1
for i in range(deviceNum):
self._retryToDetectUsbhidDevice(i, False)
time.sleep(1)

def _retryToDetectUsbhidDevice( self, needToRetry = True ):
def _retryToDetectUsbhidDevice( self, deviceIndex=0, needToRetry = True ):
usbVid = [None]
usbPid = [None]
self.isUsbhidConnected = False
self.isUsbhidConnected[deviceIndex] = False
retryCnt = 1
if needToRetry:
retryCnt = kRetryDetectTimes
while retryCnt > 0:
# Auto detect USB-HID device
hidFilter = pywinusb.hid.HidDeviceFilter(vendor_id = int(self.usbhidToConnect[0], 16), product_id = int(self.usbhidToConnect[1], 16))
hidFilter = pywinusb.hid.HidDeviceFilter(vendor_id = int(self.usbhidToConnect[deviceIndex][0], 16), product_id = int(self.usbhidToConnect[deviceIndex][1], 16))
hidDevice = hidFilter.get_devices()
self._setUsbDetectedBoardNum(len(hidDevice))
if (not self.isDymaticUsbDetection) or (len(hidDevice) > 0):
if self.connectStage[0] == uidef.kConnectStage_Rom:
if self.connectStage[deviceIndex] == uidef.kConnectStage_Rom:
for i in range(len(hidDevice)):
if len(self.usbDevicePath):
hasThisPath = False
Expand All @@ -217,7 +222,7 @@ def _retryToDetectUsbhidDevice( self, needToRetry = True ):
'flashloader':None
}
self.usbDevicePath.append(usbDevicePath)
elif self.connectStage[0] == uidef.kConnectStage_Flashloader:
elif self.connectStage[deviceIndex] == uidef.kConnectStage_Flashloader:
for i in range(len(hidDevice)):
hasThisPath = False
for j in range(len(self.usbDevicePath)):
Expand All @@ -231,19 +236,19 @@ def _retryToDetectUsbhidDevice( self, needToRetry = True ):
break
else:
pass
self.isUsbhidConnected = True
self.isUsbhidConnected[deviceIndex] = True
if self.connectStatusColor == 'yellow':
self.updateConnectStatus('black')
usbVid[0] = self.usbhidToConnect[0]
usbPid[0] = self.usbhidToConnect[1]
usbVid[0] = self.usbhidToConnect[deviceIndex][0]
usbPid[0] = self.usbhidToConnect[deviceIndex][1]
break
retryCnt = retryCnt - 1
if retryCnt != 0:
time.sleep(2)
else:
usbVid[0] = 'N/A - Not Found'
usbPid[0] = 'N/A - Not Found'
if not self.isUsbhidConnected:
if not self.isUsbhidConnected[deviceIndex]:
self.updateConnectStatus('yellow')
if self.m_choice_portVid.GetString(self.m_choice_portVid.GetSelection()) != usbVid[0] or \
self.m_choice_baudPid.GetString(self.m_choice_baudPid.GetSelection()) != usbPid[0]:
Expand All @@ -254,7 +259,7 @@ def _retryToDetectUsbhidDevice( self, needToRetry = True ):
self.m_choice_baudPid.SetItems(usbPid)
self.m_choice_baudPid.SetSelection(0)

def adjustPortSetupValue( self, connectStage=uidef.kConnectStage_Rom, usbIdList=[] ):
def adjustPortSetupValue( self, deviceIndex=0, connectStage=uidef.kConnectStage_Rom, usbIdList=[] ):
self.isUartPortSelected = self.m_radioBtn_uart.GetValue()
self.isUsbhidPortSelected = self.m_radioBtn_usbhid.GetValue()
if self.isUartPortSelected:
Expand Down Expand Up @@ -291,24 +296,24 @@ def adjustPortSetupValue( self, connectStage=uidef.kConnectStage_Rom, usbIdList=
self.m_staticText_portVid.SetLabel(uilang.kMainLanguageContentDict['sText_vid'][self.languageIndex])
self.m_staticText_baudPid.SetLabel(uilang.kMainLanguageContentDict['sText_pid'][self.languageIndex])
if connectStage == uidef.kConnectStage_Rom:
self.usbhidToConnect[0] = usbIdList[0]
self.usbhidToConnect[1] = usbIdList[1]
self._retryToDetectUsbhidDevice(False)
self.usbhidToConnect[deviceIndex][0] = usbIdList[0]
self.usbhidToConnect[deviceIndex][1] = usbIdList[1]
self._retryToDetectUsbhidDevice(deviceIndex, False)
elif connectStage == uidef.kConnectStage_Flashloader:
self.usbhidToConnect[0] = usbIdList[2]
self.usbhidToConnect[1] = usbIdList[3]
self._retryToDetectUsbhidDevice(False)
self.usbhidToConnect[deviceIndex][0] = usbIdList[2]
self.usbhidToConnect[deviceIndex][1] = usbIdList[3]
self._retryToDetectUsbhidDevice(deviceIndex, False)
else:
pass
else:
pass

def setPortSetupValue( self, connectStage=uidef.kConnectStage_Rom, usbIdList=[], retryToDetectUsb=False ):
self.adjustPortSetupValue(connectStage, usbIdList)
self.updatePortSetupValue(retryToDetectUsb)
def setPortSetupValue( self, deviceIndex=0, connectStage=uidef.kConnectStage_Rom, usbIdList=[], retryToDetectUsb=False ):
self.adjustPortSetupValue(deviceIndex, connectStage, usbIdList)
self.updatePortSetupValue(deviceIndex, retryToDetectUsb)
self._adjustSerialPortIndexValue()

def updatePortSetupValue( self, retryToDetectUsb=False ):
def updatePortSetupValue( self, deviceIndex=0, retryToDetectUsb=False ):
status = True
self.isUartPortSelected = self.m_radioBtn_uart.GetValue()
self.isUsbhidPortSelected = self.m_radioBtn_usbhid.GetValue()
Expand All @@ -325,16 +330,10 @@ def updatePortSetupValue( self, retryToDetectUsb=False ):
self.detectedBoards += 1
self.m_staticText_detectedBoardNum.SetLabel(str(self.detectedBoards))
elif self.isUsbhidPortSelected:
if self.isUsbhidConnected:
self.usbhidVid = self.m_choice_portVid.GetString(self.m_choice_portVid.GetSelection())
self.usbhidPid = self.m_choice_baudPid.GetString(self.m_choice_baudPid.GetSelection())
else:
self._retryToDetectUsbhidDevice(retryToDetectUsb)
if not self.isUsbhidConnected:
if not self.isUsbhidConnected[deviceIndex]:
self._retryToDetectUsbhidDevice(deviceIndex, retryToDetectUsb)
if not self.isUsbhidConnected[deviceIndex]:
status = False
else:
self.usbhidVid = self.m_choice_portVid.GetString(self.m_choice_portVid.GetSelection())
self.usbhidPid = self.m_choice_baudPid.GetString(self.m_choice_baudPid.GetSelection())
else:
pass
self._updateSerialPortInfo()
Expand Down

0 comments on commit 1e55f4f

Please sign in to comment.