mirror of
https://github.com/arduino/arduino-ide.git
synced 2025-07-30 14:46:34 +00:00
Changed how connection is handled on upload
This commit is contained in:
parent
9058abb015
commit
ee265aec90
@ -3,7 +3,6 @@ import { OutputChannelManager } from '@theia/output/lib/browser/output-channel';
|
|||||||
import { CoreService } from '../../common/protocol';
|
import { CoreService } from '../../common/protocol';
|
||||||
import { ArduinoMenus } from '../menu/arduino-menus';
|
import { ArduinoMenus } from '../menu/arduino-menus';
|
||||||
import { BoardsDataStore } from '../boards/boards-data-store';
|
import { BoardsDataStore } from '../boards/boards-data-store';
|
||||||
import { SerialConnectionManager } from '../serial/serial-connection-manager';
|
|
||||||
import { BoardsServiceProvider } from '../boards/boards-service-provider';
|
import { BoardsServiceProvider } from '../boards/boards-service-provider';
|
||||||
import {
|
import {
|
||||||
SketchContribution,
|
SketchContribution,
|
||||||
@ -18,8 +17,6 @@ export class BurnBootloader extends SketchContribution {
|
|||||||
@inject(CoreService)
|
@inject(CoreService)
|
||||||
protected readonly coreService: CoreService;
|
protected readonly coreService: CoreService;
|
||||||
|
|
||||||
@inject(SerialConnectionManager)
|
|
||||||
protected readonly serialConnection: SerialConnectionManager;
|
|
||||||
|
|
||||||
@inject(BoardsDataStore)
|
@inject(BoardsDataStore)
|
||||||
protected readonly boardsDataStore: BoardsDataStore;
|
protected readonly boardsDataStore: BoardsDataStore;
|
||||||
@ -91,8 +88,6 @@ export class BurnBootloader extends SketchContribution {
|
|||||||
errorMessage = e.toString();
|
errorMessage = e.toString();
|
||||||
}
|
}
|
||||||
this.messageService.error(errorMessage);
|
this.messageService.error(errorMessage);
|
||||||
} finally {
|
|
||||||
await this.serialConnection.reconnectAfterUpload();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@ import { BoardUserField, CoreService } from '../../common/protocol';
|
|||||||
import { ArduinoMenus, PlaceholderMenuNode } from '../menu/arduino-menus';
|
import { ArduinoMenus, PlaceholderMenuNode } from '../menu/arduino-menus';
|
||||||
import { ArduinoToolbar } from '../toolbar/arduino-toolbar';
|
import { ArduinoToolbar } from '../toolbar/arduino-toolbar';
|
||||||
import { BoardsDataStore } from '../boards/boards-data-store';
|
import { BoardsDataStore } from '../boards/boards-data-store';
|
||||||
import { SerialConnectionManager } from '../serial/serial-connection-manager';
|
|
||||||
import { BoardsServiceProvider } from '../boards/boards-service-provider';
|
import { BoardsServiceProvider } from '../boards/boards-service-provider';
|
||||||
import {
|
import {
|
||||||
SketchContribution,
|
SketchContribution,
|
||||||
@ -22,9 +21,6 @@ export class UploadSketch extends SketchContribution {
|
|||||||
@inject(CoreService)
|
@inject(CoreService)
|
||||||
protected readonly coreService: CoreService;
|
protected readonly coreService: CoreService;
|
||||||
|
|
||||||
@inject(SerialConnectionManager)
|
|
||||||
protected readonly serialConnection: SerialConnectionManager;
|
|
||||||
|
|
||||||
@inject(MenuModelRegistry)
|
@inject(MenuModelRegistry)
|
||||||
protected readonly menuRegistry: MenuModelRegistry;
|
protected readonly menuRegistry: MenuModelRegistry;
|
||||||
|
|
||||||
@ -294,8 +290,6 @@ export class UploadSketch extends SketchContribution {
|
|||||||
} finally {
|
} finally {
|
||||||
this.uploadInProgress = false;
|
this.uploadInProgress = false;
|
||||||
this.onDidChangeEmitter.fire();
|
this.onDidChangeEmitter.fire();
|
||||||
|
|
||||||
setTimeout(() => this.serialConnection.reconnectAfterUpload(), 5000);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -110,12 +110,17 @@ export class VerifySketch extends SketchContribution {
|
|||||||
),
|
),
|
||||||
this.sourceOverride(),
|
this.sourceOverride(),
|
||||||
]);
|
]);
|
||||||
|
const board = {
|
||||||
|
...boardsConfig.selectedBoard,
|
||||||
|
name: boardsConfig.selectedBoard?.name || '',
|
||||||
|
fqbn,
|
||||||
|
}
|
||||||
const verbose = this.preferences.get('arduino.compile.verbose');
|
const verbose = this.preferences.get('arduino.compile.verbose');
|
||||||
const compilerWarnings = this.preferences.get('arduino.compile.warnings');
|
const compilerWarnings = this.preferences.get('arduino.compile.warnings');
|
||||||
this.outputChannelManager.getChannel('Arduino').clear();
|
this.outputChannelManager.getChannel('Arduino').clear();
|
||||||
await this.coreService.compile({
|
await this.coreService.compile({
|
||||||
sketchUri: sketch.uri,
|
sketchUri: sketch.uri,
|
||||||
fqbn,
|
board,
|
||||||
optimizeForDebug: this.editorMode.compileForDebug,
|
optimizeForDebug: this.editorMode.compileForDebug,
|
||||||
verbose,
|
verbose,
|
||||||
exportBinaries,
|
exportBinaries,
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { nls } from '@theia/core/lib/common';
|
import { nls } from '@theia/core/lib/common';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
|
import { Port } from '../../../common/protocol';
|
||||||
import {
|
import {
|
||||||
ArduinoFirmwareUploader,
|
ArduinoFirmwareUploader,
|
||||||
FirmwareInfo,
|
FirmwareInfo,
|
||||||
@ -20,7 +21,7 @@ export const FirmwareUploaderComponent = ({
|
|||||||
availableBoards: AvailableBoard[];
|
availableBoards: AvailableBoard[];
|
||||||
firmwareUploader: ArduinoFirmwareUploader;
|
firmwareUploader: ArduinoFirmwareUploader;
|
||||||
updatableFqbns: string[];
|
updatableFqbns: string[];
|
||||||
flashFirmware: (firmware: FirmwareInfo, port: string) => Promise<any>;
|
flashFirmware: (firmware: FirmwareInfo, port: Port) => Promise<any>;
|
||||||
isOpen: any;
|
isOpen: any;
|
||||||
}): React.ReactElement => {
|
}): React.ReactElement => {
|
||||||
// boolean states for buttons
|
// boolean states for buttons
|
||||||
@ -81,7 +82,7 @@ export const FirmwareUploaderComponent = ({
|
|||||||
const installStatus =
|
const installStatus =
|
||||||
!!firmwareToFlash &&
|
!!firmwareToFlash &&
|
||||||
!!selectedBoard?.port &&
|
!!selectedBoard?.port &&
|
||||||
(await flashFirmware(firmwareToFlash, selectedBoard?.port.address));
|
(await flashFirmware(firmwareToFlash, selectedBoard?.port));
|
||||||
|
|
||||||
setInstallFeedback((installStatus && 'ok') || 'fail');
|
setInstallFeedback((installStatus && 'ok') || 'fail');
|
||||||
} catch {
|
} catch {
|
||||||
|
@ -15,6 +15,7 @@ import {
|
|||||||
} from '../../../common/protocol/arduino-firmware-uploader';
|
} from '../../../common/protocol/arduino-firmware-uploader';
|
||||||
import { FirmwareUploaderComponent } from './firmware-uploader-component';
|
import { FirmwareUploaderComponent } from './firmware-uploader-component';
|
||||||
import { UploadFirmware } from '../../contributions/upload-firmware';
|
import { UploadFirmware } from '../../contributions/upload-firmware';
|
||||||
|
import { Port } from '../../../common/protocol';
|
||||||
|
|
||||||
@injectable()
|
@injectable()
|
||||||
export class UploadFirmwareDialogWidget extends ReactWidget {
|
export class UploadFirmwareDialogWidget extends ReactWidget {
|
||||||
@ -49,7 +50,7 @@ export class UploadFirmwareDialogWidget extends ReactWidget {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
protected flashFirmware(firmware: FirmwareInfo, port: string): Promise<any> {
|
protected flashFirmware(firmware: FirmwareInfo, port: Port): Promise<any> {
|
||||||
this.busyCallback(true);
|
this.busyCallback(true);
|
||||||
return this.arduinoFirmwareUploader
|
return this.arduinoFirmwareUploader
|
||||||
.flash(firmware, port)
|
.flash(firmware, port)
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
import { Port } from "./boards-service";
|
||||||
|
|
||||||
export const ArduinoFirmwareUploaderPath =
|
export const ArduinoFirmwareUploaderPath =
|
||||||
'/services/arduino-firmware-uploader';
|
'/services/arduino-firmware-uploader';
|
||||||
export const ArduinoFirmwareUploader = Symbol('ArduinoFirmwareUploader');
|
export const ArduinoFirmwareUploader = Symbol('ArduinoFirmwareUploader');
|
||||||
@ -10,7 +12,7 @@ export type FirmwareInfo = {
|
|||||||
};
|
};
|
||||||
export interface ArduinoFirmwareUploader {
|
export interface ArduinoFirmwareUploader {
|
||||||
list(fqbn?: string): Promise<FirmwareInfo[]>;
|
list(fqbn?: string): Promise<FirmwareInfo[]>;
|
||||||
flash(firmware: FirmwareInfo, port: string): Promise<string>;
|
flash(firmware: FirmwareInfo, port: Port): Promise<string>;
|
||||||
uploadCertificates(command: string): Promise<any>;
|
uploadCertificates(command: string): Promise<any>;
|
||||||
updatableBoards(): Promise<string[]>;
|
updatableBoards(): Promise<string[]>;
|
||||||
availableFirmwares(fqbn: string): Promise<FirmwareInfo[]>;
|
availableFirmwares(fqbn: string): Promise<FirmwareInfo[]>;
|
||||||
|
@ -3,10 +3,10 @@ import {
|
|||||||
FirmwareInfo,
|
FirmwareInfo,
|
||||||
} from '../common/protocol/arduino-firmware-uploader';
|
} from '../common/protocol/arduino-firmware-uploader';
|
||||||
import { injectable, inject, named } from 'inversify';
|
import { injectable, inject, named } from 'inversify';
|
||||||
import { ExecutableService } from '../common/protocol';
|
import { ExecutableService, Port } from '../common/protocol';
|
||||||
import { SerialService } from '../common/protocol/serial-service';
|
|
||||||
import { getExecPath, spawnCommand } from './exec-util';
|
import { getExecPath, spawnCommand } from './exec-util';
|
||||||
import { ILogger } from '@theia/core/lib/common/logger';
|
import { ILogger } from '@theia/core/lib/common/logger';
|
||||||
|
import { MonitorManager } from './monitor-manager';
|
||||||
|
|
||||||
@injectable()
|
@injectable()
|
||||||
export class ArduinoFirmwareUploaderImpl implements ArduinoFirmwareUploader {
|
export class ArduinoFirmwareUploaderImpl implements ArduinoFirmwareUploader {
|
||||||
@ -19,8 +19,8 @@ export class ArduinoFirmwareUploaderImpl implements ArduinoFirmwareUploader {
|
|||||||
@named('fwuploader')
|
@named('fwuploader')
|
||||||
protected readonly logger: ILogger;
|
protected readonly logger: ILogger;
|
||||||
|
|
||||||
@inject(SerialService)
|
@inject(MonitorManager)
|
||||||
protected readonly serialService: SerialService;
|
protected readonly monitorManager: MonitorManager;
|
||||||
|
|
||||||
protected onError(error: any): void {
|
protected onError(error: any): void {
|
||||||
this.logger.error(error);
|
this.logger.error(error);
|
||||||
@ -69,26 +69,28 @@ export class ArduinoFirmwareUploaderImpl implements ArduinoFirmwareUploader {
|
|||||||
return await this.list(fqbn);
|
return await this.list(fqbn);
|
||||||
}
|
}
|
||||||
|
|
||||||
async flash(firmware: FirmwareInfo, port: string): Promise<string> {
|
async flash(firmware: FirmwareInfo, port: Port): Promise<string> {
|
||||||
let output;
|
let output;
|
||||||
|
const board = {
|
||||||
|
name: firmware.board_name,
|
||||||
|
fqbn: firmware.board_fqbn,
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
this.serialService.uploadInProgress = true;
|
this.monitorManager.notifyUploadStarted(board, port);
|
||||||
await this.serialService.disconnect();
|
|
||||||
output = await this.runCommand([
|
output = await this.runCommand([
|
||||||
'firmware',
|
'firmware',
|
||||||
'flash',
|
'flash',
|
||||||
'--fqbn',
|
'--fqbn',
|
||||||
firmware.board_fqbn,
|
firmware.board_fqbn,
|
||||||
'--address',
|
'--address',
|
||||||
port,
|
port.address,
|
||||||
'--module',
|
'--module',
|
||||||
`${firmware.module}@${firmware.firmware_version}`,
|
`${firmware.module}@${firmware.firmware_version}`,
|
||||||
]);
|
]);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw e;
|
throw e;
|
||||||
} finally {
|
} finally {
|
||||||
this.serialService.uploadInProgress = false;
|
this.monitorManager.notifyUploadFinished(board, port);
|
||||||
this.serialService.connectSerialIfRequired();
|
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user