def reset(self, bootloader=False, checkSTM32FFirmware=True):
		returnValue = 0
		if self.portType == 'FTDI':
			self.portHandle.reset(bootloader)
		else:
			if self.portType == 'STM32':
				returnValue = self.portHandle.open()
				if checkSTM32FFirmware:
					if returnValue == 0:
						firmwareVersionCurrent = self.portHandle.getFirmwareVersionFromFile(stringMode=False)
					if returnValue == 0:
						firmwareType = self.portHandle.getFirmwareType()
						if (firmwareType is None or (firmwareType != self.portHandle.BL_RUNNING and firmwareType != self.portHandle.APP_RUNNING)):
							errorMessage('Failed to get firmware type: Invalid reply\n')
							returnValue = 1
					if returnValue == 0:
						firmwareVersion = self.portHandle.getFirmwareVersion()
						if firmwareVersion is None:
							errorMessage('Failed to get firmware version:Invalid reply\n')
							returnValue = 1
						else:
							if (firmwareVersion & 4278190080L):
								firmwareVersion = self.portHandle.FIRMWARE_VERSION_NONE
					if returnValue == 0:
						bootloaderFirmwareVersion = self.portHandle.getBootloaderFirmwareVersion()
						if bootloaderFirmwareVersion is None:
							errorMessage('Failed to get bootloader firmware version:Invalid reply\n')
							returnValue = 1
						if bootloaderFirmwareVersion == self.portHandle.FIRMWARE_VERSION_NONE:
							self.portHandle.bootloaderPort = self.portHandle.mapSTMCompositeComPortToBootloaderCOMPort(self.portHandle.port)
					if returnValue == 0:
						if (firmwareType == self.portHandle.BL_RUNNING and (firmwareVersion != self.portHandle.FIRMWARE_VERSION_NONE and firmwareVersion >= firmwareVersionCurrent)):
							if bootloaderFirmwareVersion == self.portHandle.FIRMWARE_VERSION_NONE:
								errorMessage('Please unplug and replug the board to the PC\n')
								returnValue = 2
							else:
								result = self.portHandle.runFirmware()
								if result is not self.portHandle.OK:
									errorMessage('Failed to run firmware: Invalid reply\n')
									returnValue = 1
					if returnValue == 0:
						if (firmwareVersion == self.portHandle.FIRMWARE_VERSION_NONE or firmwareVersion < firmwareVersionCurrent):
							if firmwareVersion == self.portHandle.FIRMWARE_VERSION_NONE:
								infoMessage(('Missing STM32F103 firmware, upgrading to version %s\n' % self.portHandle.getFirmwareVersionFromFile(stringMode=True)))
							else:
								infoMessage(('Old STM32F103 firmware version %s, upgrading to version %s\n' % (self.portHandle.versionInStringFormat(firmwareVersion), self.portHandle.getFirmwareVersionFromFile(stringMode=True))))
								warningMessage('Changing firmware version can break backward compatibility and older version of stm32w_flasher may not work\n')
							if self.portHandle.upgradeFirmwareVersion():
								if ((firmwareVersion == self.portHandle.FIRMWARE_VERSION_NONE or firmwareVersion < 131072) and firmwareVersionCurrent >= 131072):
									errorMessage(('Switching to firmware %s may change your COM port number, please unplug and replug your USB device and re-run this command again\n' % self.portHandle.getFirmwareVersionFromFile(stringMode=True)))
									returnValue = 2
								else:
									result = self.portHandle.runFirmware()
									if result is not self.portHandle.OK:
										errorMessage('Failed to run firmware: Invalid reply\n')
										returnValue = 1
							else:
								errorMessage('Failed to upgrade firmware version: Invalid reply\n')
								returnValue = 1
					if returnValue == 0:
						firmwareVersion = self.portHandle.getFirmwareVersion()
						if firmwareVersion is None:
							errorMessage('Invalid reply\n')
							returnValue = 1
					if returnValue == 0:
						if firmwareVersion >= 131076:
							if self.portHandle.isBootloaderFirmwareVersionOld():
								infoMessage('Upgrading STM32F Bootloader firmware\n')
								if self.portHandle.upgradeBootloaderFirmwareVersion():
									pass
								else:
									errorMessage('Upgrade of the STM32F bootloader failed. This is a CRITICAL error and your board may brick your board\n')
									returnValue = 1
					if returnValue == 0:
						if firmwareVersion > firmwareVersionCurrent:
							warningMessage('Device firmware is more recent than expected. Are you using an old version of this software ?\n')
				if returnValue == 0:
					result = self.portHandle.reset(bootloader)
					if result is None:
						errorMessage('Failed to reset STM32W: Invalid reply\n')
						returnValue = 1
				self.portHandle.close()
			else:
				errorMessage(('Failed to detect port type for %s\n' % self.port))
				returnValue = 1
		return returnValue
	def mapSTMCompositeComPortToBootloaderCOMPort(self, port):
		warningMessage('The following procedure may fail if there are other attached USB devices.\nIn this case, try to unplug all the devices and insert only the one to be programmed, then run the command again.\n')
		return port
 def reset(self, bootloader=False, checkSTM32FFirmware=True):
     returnValue = 0
     if self.portType == 'FTDI':
         self.portHandle.reset(bootloader)
     else:
         if self.portType == 'STM32':
             returnValue = self.portHandle.open()
             if checkSTM32FFirmware:
                 if returnValue == 0:
                     firmwareVersionCurrent = self.portHandle.getFirmwareVersionFromFile(
                         stringMode=False)
                 if returnValue == 0:
                     firmwareType = self.portHandle.getFirmwareType()
                     if (firmwareType is None or
                         (firmwareType != self.portHandle.BL_RUNNING
                          and firmwareType != self.portHandle.APP_RUNNING)):
                         errorMessage(
                             'Failed to get firmware type: Invalid reply\n')
                         returnValue = 1
                 if returnValue == 0:
                     firmwareVersion = self.portHandle.getFirmwareVersion()
                     if firmwareVersion is None:
                         errorMessage(
                             'Failed to get firmware version:Invalid reply\n'
                         )
                         returnValue = 1
                     else:
                         if (firmwareVersion & 4278190080L):
                             firmwareVersion = self.portHandle.FIRMWARE_VERSION_NONE
                 if returnValue == 0:
                     bootloaderFirmwareVersion = self.portHandle.getBootloaderFirmwareVersion(
                     )
                     if bootloaderFirmwareVersion is None:
                         errorMessage(
                             'Failed to get bootloader firmware version:Invalid reply\n'
                         )
                         returnValue = 1
                     if bootloaderFirmwareVersion == self.portHandle.FIRMWARE_VERSION_NONE:
                         self.portHandle.bootloaderPort = self.portHandle.mapSTMCompositeComPortToBootloaderCOMPort(
                             self.portHandle.port)
                 if returnValue == 0:
                     if (firmwareType == self.portHandle.BL_RUNNING and
                         (firmwareVersion !=
                          self.portHandle.FIRMWARE_VERSION_NONE
                          and firmwareVersion >= firmwareVersionCurrent)):
                         if bootloaderFirmwareVersion == self.portHandle.FIRMWARE_VERSION_NONE:
                             errorMessage(
                                 'Please unplug and replug the board to the PC\n'
                             )
                             returnValue = 2
                         else:
                             result = self.portHandle.runFirmware()
                             if result is not self.portHandle.OK:
                                 errorMessage(
                                     'Failed to run firmware: Invalid reply\n'
                                 )
                                 returnValue = 1
                 if returnValue == 0:
                     if (firmwareVersion
                             == self.portHandle.FIRMWARE_VERSION_NONE
                             or firmwareVersion < firmwareVersionCurrent):
                         if firmwareVersion == self.portHandle.FIRMWARE_VERSION_NONE:
                             infoMessage((
                                 'Missing STM32F103 firmware, upgrading to version %s\n'
                                 %
                                 self.portHandle.getFirmwareVersionFromFile(
                                     stringMode=True)))
                         else:
                             infoMessage((
                                 'Old STM32F103 firmware version %s, upgrading to version %s\n'
                                 % (self.portHandle.versionInStringFormat(
                                     firmwareVersion),
                                    self.portHandle.
                                    getFirmwareVersionFromFile(
                                        stringMode=True))))
                             warningMessage(
                                 'Changing firmware version can break backward compatibility and older version of stm32w_flasher may not work\n'
                             )
                         if self.portHandle.upgradeFirmwareVersion():
                             if ((firmwareVersion
                                  == self.portHandle.FIRMWARE_VERSION_NONE
                                  or firmwareVersion < 131072)
                                     and firmwareVersionCurrent >= 131072):
                                 errorMessage((
                                     'Switching to firmware %s may change your COM port number, please unplug and replug your USB device and re-run this command again\n'
                                     % self.portHandle.
                                     getFirmwareVersionFromFile(
                                         stringMode=True)))
                                 returnValue = 2
                             else:
                                 result = self.portHandle.runFirmware()
                                 if result is not self.portHandle.OK:
                                     errorMessage(
                                         'Failed to run firmware: Invalid reply\n'
                                     )
                                     returnValue = 1
                         else:
                             errorMessage(
                                 'Failed to upgrade firmware version: Invalid reply\n'
                             )
                             returnValue = 1
                 if returnValue == 0:
                     firmwareVersion = self.portHandle.getFirmwareVersion()
                     if firmwareVersion is None:
                         errorMessage('Invalid reply\n')
                         returnValue = 1
                 if returnValue == 0:
                     if firmwareVersion >= 131076:
                         if self.portHandle.isBootloaderFirmwareVersionOld(
                         ):
                             infoMessage(
                                 'Upgrading STM32F Bootloader firmware\n')
                             if self.portHandle.upgradeBootloaderFirmwareVersion(
                             ):
                                 pass
                             else:
                                 errorMessage(
                                     'Upgrade of the STM32F bootloader failed. This is a CRITICAL error and your board may brick your board\n'
                                 )
                                 returnValue = 1
                 if returnValue == 0:
                     if firmwareVersion > firmwareVersionCurrent:
                         warningMessage(
                             'Device firmware is more recent than expected. Are you using an old version of this software ?\n'
                         )
             if returnValue == 0:
                 result = self.portHandle.reset(bootloader)
                 if result is None:
                     errorMessage('Failed to reset STM32W: Invalid reply\n')
                     returnValue = 1
             self.portHandle.close()
         else:
             errorMessage(
                 ('Failed to detect port type for %s\n' % self.port))
             returnValue = 1
     return returnValue
 def mapSTMCompositeComPortToBootloaderCOMPort(self, port):
     warningMessage(
         'The following procedure may fail if there are other attached USB devices.\nIn this case, try to unplug all the devices and insert only the one to be programmed, then run the command again.\n'
     )
     return port
Exemple #5
0
    def task_abstraction(self, rs=0):

        if self.max and len(self.max) <= len(self.hierarchy):
            mes.currentMessage(
                "Reached maximum size for bottom-up abstraction")
            return

        mes.warningMessage("Getting network's parameters")

        ANN = self.hierarchy[-1].Q[rs]
        parameters = ANN.getCopy()

        mes.warningMessage("unrolling parameters")

        W = parameters['out'][lstm.out_weights_key]
        b = parameters['out'][lstm.out_bias_key]
        rnn = parameters['rnn']

        mes.warningMessage("Getting network shape")

        size = (np.shape(W)[1])

        mes.warningMessage("Computing new weights")

        new_w = (W * (1 / size)).sum(1)
        new_W = np.transpose(np.array([new_w, new_w]))

        mes.warningMessage("Computing new biases")

        _b = (b * size).sum()
        new_b = np.array([_b, _b])

        mes.warningMessage("Rolling weights and biases")

        W_pars = {lstm.out_weights_key: new_W, lstm.out_bias_key: new_b}

        mes.warningMessage("Copying policy")

        (self.hierarchy)[-1].copyPolicy(rs)
        #new_ANN = ANN.restart(ANN.input_size, rnn, W_pars, ANN.alpha, self.sess, ANN.scope)

        mes.warningMessage("Restaring top policy")

        self.hierarchy.append(
            self.policyClass(self.agent, 1, self.stateSize, 2, self.batch_size,
                             None))
        self.hierarchy[-1].Q[0] = self.hierarchy[-1].Q[0].restart(
            ANN.input_size, rnn, W_pars, ANN.alpha, None, ANN.scope)

        mes.currentMessage("Adjusting stats")

        self.bottleneck_data = self.make_bottleneck_data(2)

        self.policy_data.append([self.policy_data[-1][rs].copy()])
        self.layer_data.append(self.layer_data[-1].copy())

        self.policy_data[-2][rs]['sd'] *= 1.0 / 4.0
        self.policy_data[-2][rs]['mu'] *= 1.0 / 2.0

        self.policy_data[-2].append(self.policy_data[-2][rs].copy())

        self.bottleneck_data['mu'] = np.array([0.5, 0.5])