diff --git a/src/arduino/programmerManager.ts b/src/arduino/programmerManager.ts index 40c26d0c..a060f211 100644 --- a/src/arduino/programmerManager.ts +++ b/src/arduino/programmerManager.ts @@ -1,8 +1,8 @@ import * as vscode from "vscode"; import * as constants from "../common/constants"; +import { DeviceContext } from "../deviceContext"; import { ArduinoApp } from "./arduino"; import { IArduinoSettings } from "./arduinoSettings"; -import { ArduinoSettings } from "./arduinoSettings"; export enum ProgrammerList { "AVR ISP", @@ -54,6 +54,8 @@ export class ProgrammerManager { this._currentprogrammer = ProgrammerList[chosen]; this.getProgrammer(this._currentprogrammer); this._programmerStatusBar.text = chosen; + const dc = DeviceContext.getInstance(); + dc.programmer = chosen; } public getProgrammer(newProgrammer: ProgrammerList) { diff --git a/src/deviceContext.ts b/src/deviceContext.ts index 010cade8..2e7f18e3 100644 --- a/src/deviceContext.ts +++ b/src/deviceContext.ts @@ -45,6 +45,12 @@ export interface IDeviceContext { debugger_: string; + /** + * Current selected programmer. + * @property {string} + */ + programmer: string; + /** * Arduino custom board configuration * @property {string} @@ -88,6 +94,8 @@ export class DeviceContext implements IDeviceContext, vscode.Disposable { private _prebuild: string; + private _programmer: string; + /** * @constructor */ @@ -145,6 +153,7 @@ export class DeviceContext implements IDeviceContext, vscode.Disposable { this._debugger = deviceConfigJson["debugger"]; this._onDidChange.fire(); this._prebuild = deviceConfigJson.prebuild; + this._programmer = deviceConfigJson.programmer; } else { Logger.notifyUserError("arduinoFileError", new Error(constants.messages.ARDUINO_FILE_ERROR)); } @@ -157,6 +166,7 @@ export class DeviceContext implements IDeviceContext, vscode.Disposable { this._debugger = null; this._onDidChange.fire(); this._prebuild = null; + this._programmer = null; } return this; }, (reason) => { @@ -174,6 +184,7 @@ export class DeviceContext implements IDeviceContext, vscode.Disposable { this._debugger = null; this._onDidChange.fire(); this._prebuild = null; + this._programmer = null; return this; }); @@ -207,6 +218,7 @@ export class DeviceContext implements IDeviceContext, vscode.Disposable { deviceConfigJson.output = this.output; deviceConfigJson["debugger"] = this.debugger_; deviceConfigJson.configuration = this.configuration; + deviceConfigJson.programmer = this.programmer; util.mkdirRecursivelySync(path.dirname(deviceConfigFile)); fs.writeFileSync(deviceConfigFile, JSON.stringify(deviceConfigJson, (key, value) => { @@ -279,6 +291,15 @@ export class DeviceContext implements IDeviceContext, vscode.Disposable { this.saveContext(); } + public get programmer() { + return this._programmer; + } + + public set programmer(value: string) { + this._programmer = value; + this.saveContext(); + } + public async initialize() { if (ArduinoWorkspace.rootPath && util.fileExistsSync(path.join(ArduinoWorkspace.rootPath, ARDUINO_CONFIG_FILE))) { vscode.window.showInformationMessage("Arduino.json is already generated.");