Skip to content

Commit f4097b5

Browse files
author
Akos Kitta
committed
upload with programmer when it's explicitly asked
Signed-off-by: Akos Kitta <kittaakos@typefox.io>
1 parent 491e0cb commit f4097b5

File tree

5 files changed

+23
-16
lines changed

5 files changed

+23
-16
lines changed

arduino-ide-extension/src/browser/contributions/upload-sketch.ts

+18-2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ export class UploadSketch extends SketchContribution {
3030
registry.registerCommand(UploadSketch.Commands.UPLOAD_SKETCH, {
3131
execute: () => this.uploadSketch()
3232
});
33+
registry.registerCommand(UploadSketch.Commands.UPLOAD_SKETCH_USING_PROGRAMMER, {
34+
execute: () => this.uploadSketch(true)
35+
});
3336
registry.registerCommand(UploadSketch.Commands.UPLOAD_SKETCH_TOOLBAR, {
3437
isVisible: widget => ArduinoToolbar.is(widget) && widget.side === 'left',
3538
execute: () => registry.executeCommand(UploadSketch.Commands.UPLOAD_SKETCH.id)
@@ -42,13 +45,22 @@ export class UploadSketch extends SketchContribution {
4245
label: 'Upload',
4346
order: '0'
4447
});
48+
registry.registerMenuAction(ArduinoMenus.SKETCH__MAIN_GROUP, {
49+
commandId: UploadSketch.Commands.UPLOAD_SKETCH_USING_PROGRAMMER.id,
50+
label: 'Upload Using Programmer',
51+
order: '1'
52+
});
4553
}
4654

4755
registerKeybindings(registry: KeybindingRegistry): void {
4856
registry.registerKeybinding({
4957
command: UploadSketch.Commands.UPLOAD_SKETCH.id,
5058
keybinding: 'CtrlCmd+U'
5159
});
60+
registry.registerKeybinding({
61+
command: UploadSketch.Commands.UPLOAD_SKETCH_USING_PROGRAMMER.id,
62+
keybinding: 'CtrlCmd+Shift+U'
63+
});
5264
}
5365

5466
registerToolbarItems(registry: TabBarToolbarRegistry): void {
@@ -60,7 +72,7 @@ export class UploadSketch extends SketchContribution {
6072
});
6173
}
6274

63-
async uploadSketch(): Promise<void> {
75+
async uploadSketch(usingProgrammer: boolean = false): Promise<void> {
6476
const uri = await this.currentSketchFile();
6577
if (!uri) {
6678
return;
@@ -86,12 +98,13 @@ export class UploadSketch extends SketchContribution {
8698
this.boardsDataStore.getData(boardsConfig.selectedBoard.fqbn)
8799
]);
88100
this.outputChannelManager.getChannel('Arduino: upload').clear();
101+
const programmer = usingProgrammer ? data.selectedProgrammer : undefined;
89102
await this.coreService.upload({
90103
sketchUri: uri,
91104
fqbn,
92105
port: selectedPort.address,
93106
optimizeForDebug: this.editorMode.compileForDebug,
94-
programmer: data.selectedProgrammer
107+
programmer
95108
});
96109
this.messageService.info('Done uploading.', { timeout: 1000 });
97110
} catch (e) {
@@ -110,6 +123,9 @@ export namespace UploadSketch {
110123
export const UPLOAD_SKETCH: Command = {
111124
id: 'arduino-upload-sketch'
112125
};
126+
export const UPLOAD_SKETCH_USING_PROGRAMMER: Command = {
127+
id: 'arduino-upload-sketch-using-programmer'
128+
};
113129
export const UPLOAD_SKETCH_TOOLBAR: Command = {
114130
id: 'arduino-upload-sketch--toolbar'
115131
};

arduino-ide-extension/src/browser/contributions/verify-sketch.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export class VerifySketch extends SketchContribution {
3636
registry.registerMenuAction(ArduinoMenus.SKETCH__MAIN_GROUP, {
3737
commandId: VerifySketch.Commands.VERIFY_SKETCH.id,
3838
label: 'Verify/Compile',
39-
order: '0'
39+
order: '2'
4040
});
4141
}
4242

arduino-ide-extension/src/common/protocol/boards-service.ts

-9
Original file line numberDiff line numberDiff line change
@@ -287,15 +287,6 @@ export namespace Programmer {
287287
return left.id === right.id && left.name === right.name && left.platform === right.platform;
288288
}
289289

290-
export function toString({ id, platform }: Programmer): string {
291-
// tslint:disable-next-line: whitespace
292-
const [vendor,] = platform.split(':');
293-
if (!vendor) {
294-
throw new Error(`Could not extract vendor from platform: '${platform}'.`);
295-
}
296-
return `${vendor}:${id}`;
297-
}
298-
299290
}
300291

301292
export namespace Board {

arduino-ide-extension/src/common/protocol/core-service.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export namespace CoreService {
2020
readonly sketchUri: string;
2121
readonly fqbn: string;
2222
readonly optimizeForDebug: boolean;
23-
readonly programmer?: Programmer;
23+
readonly programmer?: Programmer | undefined;
2424
}
2525
}
2626

arduino-ide-extension/src/node/core-service-impl.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { inject, injectable, postConstruct } from 'inversify';
22
import { FileSystem } from '@theia/filesystem/lib/common/filesystem';
33
import { CoreService, CoreServiceClient } from '../common/protocol/core-service';
44
import { CompileReq, CompileResp } from './cli-protocol/commands/compile_pb';
5-
import { BoardsService, Programmer } from '../common/protocol/boards-service';
5+
import { BoardsService } from '../common/protocol/boards-service';
66
import { CoreClientProvider } from './core-client-provider';
77
import * as path from 'path';
88
import { ToolOutputServiceServer } from '../common/protocol/tool-output-service';
@@ -62,7 +62,7 @@ export class CoreServiceImpl implements CoreService {
6262
compilerReq.setVerbose(true);
6363
compilerReq.setQuiet(false);
6464
if (options.programmer) {
65-
compilerReq.setProgrammer(Programmer.toString(options.programmer));
65+
compilerReq.setProgrammer(options.programmer.id);
6666
}
6767

6868
const result = client.compile(compilerReq);
@@ -108,7 +108,7 @@ export class CoreServiceImpl implements CoreService {
108108
uploadReq.setFqbn(fqbn);
109109
uploadReq.setPort(options.port);
110110
if (options.programmer) {
111-
uploadReq.setProgrammer(Programmer.toString(options.programmer));
111+
uploadReq.setProgrammer(options.programmer.id);
112112
}
113113
const result = client.upload(uploadReq);
114114

0 commit comments

Comments
 (0)