def on_upload(source, target, env): envkey = None ghst = False firmware_path = str(source[0]) upload_force = target[0].name == 'uploadforce' # 'in' operator doesn't work on Alias list upload_port = env.get('UPLOAD_PORT', None) if upload_port is None: upload_port = serials_find.get_serial_port() upload_speed = env.get('UPLOAD_SPEED', None) if upload_speed is None: upload_speed = BAUDRATE_DEFAULT upload_flags = env.get('UPLOAD_FLAGS', []) for line in upload_flags: flags = line.split() for flag in flags: if "GHST=" in flag: ghst = eval(flag.split("=")[1]) elif "BL_KEY=" in flag: envkey = flag.split("=")[1] try: returncode = uart_upload(upload_port, firmware_path, upload_speed, ghst, upload_force, key=envkey, target=env['PIOENV']) except Exception as e: dbg_print("{0}\n".format(e)) return ElrsUploadResult.ErrorGeneral return returncode
def upload_stm32_uart(args): if args.port == None: args.port = serials_find.get_serial_port() return UARTupload.uart_upload(args.port, args.file.name, args.baud, target=args.target)
def on_upload(source, target, env): envkey = None ghst = False firmware_path = str(source[0]) upload_port = env.get('UPLOAD_PORT', None) if upload_port is None: upload_port = serials_find.get_serial_port() upload_speed = env.get('UPLOAD_SPEED', None) if upload_speed is None: upload_speed = BAUDRATE_DEFAULT upload_flags = env.get('UPLOAD_FLAGS', []) for line in upload_flags: flags = line.split() for flag in flags: if "GHST=" in flag: ghst = eval(flag.split("=")[1]) elif "BL_KEY=" in flag: envkey = flag.split("=")[1] try: uart_upload(upload_port, firmware_path, upload_speed, ghst, key=envkey, target=env['PIOENV']) except Exception as e: dbg_print("{0}\n".format(e)) return -1 return 0
def on_upload(source, target, env): target_name = env['PIOENV'].upper() platform = env.get('PIOPLATFORM', '') envkey = None ghst = False firmware_path = str(source[0]) elrs_baudrate = bootloader.BAUDRATE_ELRS_PROTO flags = env.get('BUILD_FLAGS', []) for flag in flags: if 'PROTOCOL_ELRS_RX_BAUDRATE=1' in flag: elrs_baudrate = eval(flag.split("=")[1]) for flag in flags: if 'PROTOCOL_ELRS_TO_FC=' in flag and 0 < eval(flag.split("=")[1]): print_log("ELRS build option detected. Change upload speed to %u" % elrs_baudrate) env['UPLOAD_SPEED'] = elrs_baudrate upload_port = env.get('UPLOAD_PORT', None) if upload_port is None: upload_port = serials_find.get_serial_port() upload_speed = env.get('UPLOAD_SPEED', None) #if "_RX_" in target_name: # upload_speed = env.GetProjectOption("upload_speed_passthrough", upload_speed) if upload_speed is None: upload_speed = bootloader.BAUDRATE_CRSF upload_flags = env.get('UPLOAD_FLAGS', []) for line in upload_flags: flags = line.split() for flag in flags: if "GHST=" in flag: ghst = eval(flag.split("=")[1]) elif "BL_KEY=" in flag: envkey = flag.split("=")[1] try: if platform in ['ststm32']: uploader_xmodem.uart_upload(upload_port, firmware_path, upload_speed, ghst, key=envkey, target=target_name) elif platform in ['espressif8266', 'espressif32']: uploader_esp.uart_upload(upload_port, firmware_path, upload_speed, key=envkey, target=target_name) except Exception as e: print_error("{0}\n".format(e)) return -1 return 0
def upload_esp8266_uart(args): if args.port == None: args.port = serials_find.get_serial_port() try: esptool.main([ '--chip', 'esp8266', '--baud', str(args.baud), '--after', 'soft_reset', 'write_flash', '0x0000', args.file.name ]) except: return ElrsUploadResult.ErrorGeneral return ElrsUploadResult.Success
def upload_esp32_etx(args): if args.port == None: args.port = serials_find.get_serial_port() ETXinitPassthrough.etx_passthrough_init(args.port, args.baud) try: esptool.main([ '--chip', 'esp32', '--baud', str(args.baud), '--before', 'no_reset', '--after', 'hard_reset', 'write_flash', '-z', '--flash_mode', 'dio', '--flash_freq', '40m', '--flash_size', 'detect', '0x1000', 'bootloader_dio_40m.bin', '0x8000', 'partitions.bin', '0xe000', 'boot_app0.bin', '0x10000', args.file.name ]) except: return ElrsUploadResult.ErrorGeneral return ElrsUploadResult.Success
def on_upload(source, target, env): firmware_path = str(source[0]) protocol = PROTOCOL_DEFAULT upload_port = env.get('UPLOAD_PORT', None) if upload_port is None: upload_port = serials_find.get_serial_port() upload_flags = env.get('UPLOAD_FLAGS', []) for line in upload_flags: flags = line.split() for flag in flags: if "PROTOCOL=" in flag: protocol = flag.split("=")[1] uart_upload(upload_port, firmware_path, protocol)
def on_upload(source, target, env): ghst = False firmware_path = str(source[0]) upload_port = env.get('UPLOAD_PORT', None) if upload_port is None: upload_port = serials_find.get_serial_port() upload_speed = env.get('UPLOAD_SPEED', None) if upload_speed is None: upload_speed = BAUDRATE_DEFAULT upload_flags = env.get('UPLOAD_FLAGS', []) for line in upload_flags: flags = line.split() for flag in flags: if "GHST=" in flag: ghst = eval(flag.split("=")[1]) uart_upload(upload_port, firmware_path, upload_speed, ghst)
def upload_esp8266_bf(args): if args.port == None: args.port = serials_find.get_serial_port() mode = 'upload' if args.force == True: mode = 'uploadforce' retval = BFinitPassthrough.main( ['-p', args.port, '-b', str(args.baud), '-r', args.target, '-a', mode]) if retval != ElrsUploadResult.Success: return retval try: esptool.main([ '--chip', 'esp8266', '--baud', str(args.baud), '--before', 'no_reset', '--after', 'soft_reset', 'write_flash', '0x0000', args.file.name ]) except: return ElrsUploadResult.ErrorGeneral return ElrsUploadResult.Success
if half_duplex == True: BootloaderInitSeq1 = bytes([0x89,0x04,0x32,0x62,0x6c,0x0A]) # GHST dbg_print(" Using GHST (half duplex)!\n") else: BootloaderInitSeq1 = bytes([0xEC,0x04,0x32,0x62,0x6c,0x0A]) # CRSF s.write(BootloaderInitSeq1) time.sleep(.2) s.close() if __name__ == '__main__': parser = argparse.ArgumentParser(description="Initialize BetaFlight passthrough and optionally send a reboot comamnd sequence") parser.add_argument("-b", "--baud", type=int, default=420000, help="Baud rate for passthrough communication") parser.add_argument("-p", "--port", type=str, help="Override serial port autodetection and use PORT") parser.add_argument("-nr", "--no-reset", action="store_false", dest="reset_to_bl", help="Do not send reset_to_bootloader command sequence") args = parser.parse_args() if (args.port == None): args.port = serials_find.get_serial_port() try: bf_passthrough_init(args.port, args.baud, reset_to_bl=args.reset_to_bl) except PassthroughEnabled as err: dbg_print(str(err))
def main(custom_args=None): parser = argparse.ArgumentParser( description= "Initialize BetaFlight passthrough and optionally send a reboot comamnd sequence" ) parser.add_argument("-b", "--baud", type=int, default=420000, help="Baud rate for passthrough communication") parser.add_argument("-p", "--port", type=str, help="Override serial port autodetection and use PORT") parser.add_argument( "-r", "--target", type=str, help="The target firmware that is going to be uploaded") parser.add_argument( "-nr", "--no-reset", action="store_false", dest="reset_to_bl", help="Do not send reset_to_bootloader command sequence") parser.add_argument("-hd", "--half-duplex", action="store_true", dest="half_duplex", help="Use half duplex mode") parser.add_argument( "-t", "--type", type=str, default="ESP82", help= "Defines flash target type which is sent to target in reboot command") parser.add_argument( "-a", "--action", type=str, default="upload", help= "Upload action: upload (default), or uploadforce to flash even on target mismatch" ) args = parser.parse_args(custom_args) if (args.port == None): args.port = serials_find.get_serial_port() returncode = ElrsUploadResult.Success try: bf_passthrough_init(args.port, args.baud) except PassthroughEnabled as err: dbg_print(str(err)) if args.reset_to_bl: returncode = reset_to_bootloader(args) return returncode