From d13a43668e0da57fab2b749ae97c56cd8f269367 Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Mon, 24 Aug 2020 10:27:36 +0200 Subject: [PATCH] Made the port optional for upload using programmer Signed-off-by: Akos Kitta --- .../src/browser/contributions/upload-sketch.ts | 11 +++++++++-- .../src/common/protocol/core-service.ts | 2 +- arduino-ide-extension/src/node/core-service-impl.ts | 7 ++++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/arduino-ide-extension/src/browser/contributions/upload-sketch.ts b/arduino-ide-extension/src/browser/contributions/upload-sketch.ts index ed0b569d..59091031 100644 --- a/arduino-ide-extension/src/browser/contributions/upload-sketch.ts +++ b/arduino-ide-extension/src/browser/contributions/upload-sketch.ts @@ -98,20 +98,27 @@ export class UploadSketch extends SketchContribution { let options: CoreService.Upload.Options | undefined = undefined; const sketchUri = uri; const optimizeForDebug = this.editorMode.compileForDebug; + const { selectedPort } = boardsConfig; if (usingProgrammer) { const programmer = selectedProgrammer; if (!programmer) { throw new Error('Programmer is not selected. Please select a programmer.'); } + let port: undefined | string = undefined; + // If the port is set by the user, we pass it to the CLI as it might be required. + // If it is not set but the CLI requires it, we let the CLI to complain. + if (selectedPort) { + port = selectedPort.address; + } options = { sketchUri, fqbn, optimizeForDebug, - programmer + programmer, + port }; } else { - const { selectedPort } = boardsConfig; if (!selectedPort) { throw new Error('No ports selected. Please select a port.'); } diff --git a/arduino-ide-extension/src/common/protocol/core-service.ts b/arduino-ide-extension/src/common/protocol/core-service.ts index 1a0c6edc..cc51b738 100644 --- a/arduino-ide-extension/src/common/protocol/core-service.ts +++ b/arduino-ide-extension/src/common/protocol/core-service.ts @@ -26,7 +26,7 @@ export namespace CoreService { export namespace Upload { export type Options = Compile.Options & Readonly<{ port: string }> | - Compile.Options & Readonly<{ programmer: Programmer }>; + Compile.Options & Readonly<{ programmer: Programmer, port?: string }>; } } diff --git a/arduino-ide-extension/src/node/core-service-impl.ts b/arduino-ide-extension/src/node/core-service-impl.ts index 884c69c3..67163544 100644 --- a/arduino-ide-extension/src/node/core-service-impl.ts +++ b/arduino-ide-extension/src/node/core-service-impl.ts @@ -103,11 +103,12 @@ export class CoreServiceImpl implements CoreService { uploadReq.setInstance(instance); uploadReq.setSketchPath(sketchpath); uploadReq.setFqbn(fqbn); - if ('port' in options) { - uploadReq.setPort(options.port); - } else { + if ('programmer' in options) { uploadReq.setProgrammer(options.programmer.id); } + if (options.port) { + uploadReq.setPort(options.port); + } const result = client.upload(uploadReq); try {