Skip to content
This repository was archived by the owner on Oct 1, 2024. It is now read-only.

Modify to use standalone Serial Monitor Extension #1577

Merged
merged 15 commits into from
Feb 9, 2023
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ You can find code samples and tutorials each time that you connect a supported d
This extension provides several commands in the Command Palette (<kbd>F1</kbd> or <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> *or* <kbd>Cmd</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd>) for working with `*.ino` files:

- **Arduino: Board Manager**: Manage packages for boards. You can add 3rd party Arduino board by configuring `Additional Board Manager URLs` in the board manager.
- **Arduino: Change Baud Rate**: Change the baud rate of the selected serial port.
- **Arduino: Change Board Type**: Change board type or platform.
- **Arduino: Change Timestamp Format**: Change format of timestamp printed before each line of Serial Monitor output.
- **Arduino: Close Serial Monitor**: Stop the serial monitor and release the serial port.
Expand All @@ -67,7 +66,6 @@ This extension provides several commands in the Command Palette (<kbd>F1</kbd> o
- **Arduino: Library Manager**: Explore and manage libraries.
- **Arduino: Open Serial Monitor**: Open the serial monitor in the integrated output window.
- **Arduino: Select Serial Port**: Change the current serial port.
- **Arduino: Send Text to Serial Port**: Send a line of text via the current serial port.
- **Arduino: Upload**: Build sketch and upload to Arduino board.
- **Arduino: CLI Upload**: Upload complied code without building sketch (CLI only).
- **Arduino: Upload Using Programmer**: Upload using an external programmer.
Expand All @@ -93,8 +91,6 @@ This extension provides several commands in the Command Palette (<kbd>F1</kbd> o
| `arduino.enableUSBDetection` | Enable/disable USB detection from the VSCode Arduino extension. The default value is `true`. When your device is plugged in to your computer, it will pop up a message "`Detected board ****, Would you like to switch to this board type`". After clicking the `Yes` button, it will automatically detect which serial port (COM) is connected a USB device. If your device does not support this feature, please provide us with the PID/VID of your device; the code format is defined in `misc/usbmapping.json`.To learn more about how to list the vid/pid, use the following tools: https://github.com/EmergingTechnologyAdvisors/node-serialport `npm install -g serialport` `serialport-list -f jsonline`|
| `arduino.disableTestingOpen` | Enable/disable automatic sending of a test message to the serial port for checking the open status. The default value is `false` (a test message will be sent). |
| `arduino.skipHeaderProvider` | Enable/disable the extension providing completion items for headers. This functionality is included in newer versions of the C++ extension. The default value is `false`.|
| `arduino.defaultBaudRate` | Default baud rate for the serial port monitor. The default value is 115200. Supported values are 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 74880, 115200, 230400 and 250000 |
| `arduino.defaultTimestampFormat` | Format of timestamp printed before each line of Serial Monitor output. You can find list of all available placeholders [here](https://github.com/samsonjs/strftime#supported-specifiers). |
| `arduino.disableIntelliSenseAutoGen` | When `true` vscode-arduino will not auto-generate an IntelliSense configuration (i.e. `.vscode/c_cpp_properties.json`) by analyzing Arduino's compiler output. |
| `arduino.analyzeOnOpen` | When true, automatically run analysis when the project is opened. Only works when `arduino.analyzeOnSettingChange` is true. |
| `arduino.analyzeOnSettingChange` | When true, automatically run analysis when board, configuration, or sketch settings are changed. |
Expand All @@ -113,7 +109,6 @@ The following Visual Studio Code settings are available for the Arduino extensio
"https://raw.githubusercontent.com/VSChina/azureiotdevkit_tools/master/package_azureboard_index.json",
"http://arduino.esp8266.com/stable/package_esp8266com_index.json"
],
"arduino.defaultBaudRate": 115200
}
```

Expand Down
340 changes: 14 additions & 326 deletions package-lock.json

Large diffs are not rendered by default.

26 changes: 6 additions & 20 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,8 @@
"onCommand:arduino.selectProgrammer",
"onCommand:arduino.selectSerialPort",
"onCommand:arduino.selectSketch",
"onCommand:arduino.changeBaudRate",
"onCommand:arduino.changeTimestampFormat",
"onCommand:arduino.openSerialMonitor",
"onCommand:arduino.sendMessageToSerialPort",
"onCommand:arduino.changeTimestampFormat",
"onCommand:arduino.closeSerialMonitor",
"onCommand:arduino.changeBoardType",
"onCommand:arduino.showBoardConfig",
Expand Down Expand Up @@ -125,17 +123,13 @@
"title": "Arduino: Select Serial Port"
},
{
"command": "arduino.changeBaudRate",
"title": "Arduino: Change Baud Rate"
"command": "arduino.openSerialMonitor",
"title": "Arduino: Open Serial Monitor"
},
{
"command": "arduino.changeTimestampFormat",
"title": "Arduino: Change Timestamp Format"
},
{
"command": "arduino.openSerialMonitor",
"title": "Arduino: Open Serial Monitor"
},
{
"command": "arduino.closeSerialMonitor",
"title": "Arduino: Close Serial Monitor"
Expand Down Expand Up @@ -527,20 +521,11 @@
"type": "boolean",
"default": false
},
"arduino.defaultBaudRate": {
"type": "number",
"default": 115200
},
"arduino.disableIntelliSenseAutoGen": {
"type": "boolean",
"default": false,
"description": "When disabled vscode-arduino will not auto-generate an IntelliSense configuration (i.e. c_cpp_properties.json) by analyzing the compiler output."
},
"arduino.defaultTimestampFormat": {
"type": "string",
"default": "",
"markdownDescription": "Format of timestamp printed before each line of Serial Monitor output. You can find list of all available placeholders [here](https://github.com/samsonjs/strftime#supported-specifiers)."
},
"arduino.analyzeOnOpen": {
"type": "boolean",
"default": true,
Expand Down Expand Up @@ -600,7 +585,8 @@
"test": "gulp test"
},
"extensionDependencies": [
"ms-vscode.cpptools"
"ms-vscode.cpptools",
"ms-vscode.vscode-serial-monitor"
],
"devDependencies": {
"@babel/core": "^7.15.5",
Expand Down Expand Up @@ -646,6 +632,7 @@
"webpack": "^4.44.1"
},
"dependencies": {
"@microsoft/vscode-serial-monitor-api": "^0.1.5",
"@vscode/extension-telemetry": "~0.6.2",
"body-parser": "^1.16.1",
"cocopa": "0.0.13",
Expand All @@ -657,7 +644,6 @@
"iconv-lite": "^0.4.18",
"impor": "^0.1.1",
"properties": "^1.2.1",
"serialport": "^10.2.2",
"strftime": "^0.9.2",
"usb-detection": "^4.13.0",
"uuid": "^3.0.1",
Expand Down
2 changes: 1 addition & 1 deletion src/arduino/arduino.ts
Original file line number Diff line number Diff line change
Expand Up @@ -747,7 +747,7 @@ export class ArduinoApp {
if (buildMode === BuildMode.Upload || buildMode === BuildMode.UploadProgrammer) {
UsbDetector.getInstance().resumeListening();
if (restoreSerialMonitor) {
await SerialMonitor.getInstance().openSerialMonitor();
await SerialMonitor.getInstance().openSerialMonitor(true);
}
}
return ret;
Expand Down
35 changes: 0 additions & 35 deletions src/arduino/arduinoSettings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,9 @@ export interface IArduinoSettings {
defaultLibPath: string;
sketchbookPath: string;
preferencePath: string;
defaultBaudRate: number;
preferences: Map<string, string>;
useArduinoCli: boolean;
usingBundledArduinoCli: boolean;
defaultTimestampFormat: string;
analyzeOnSettingChange: boolean;
reloadPreferences(): void;
}
Expand All @@ -40,13 +38,10 @@ export class ArduinoSettings implements IArduinoSettings {

private _sketchbookPath: string;

private _defaultBaudRate: number;

private _preferences: Map<string, string>;

private _useArduinoCli: boolean;

private _defaultTimestampFormat: string;

private _usingBundledArduinoCli: boolean = false;

Expand All @@ -68,8 +63,6 @@ export class ArduinoSettings implements IArduinoSettings {
this._commandPath = VscodeSettings.getInstance().commandPath;
this._useArduinoCli = VscodeSettings.getInstance().useArduinoCli;
await this.tryResolveArduinoPath();
await this.tryGetDefaultBaudRate();
await this.tryGetDefaultTimestampFormat();
if (platform === "win32") {
await this.updateWindowsPath();
if (this._commandPath === "") {
Expand Down Expand Up @@ -181,15 +174,6 @@ export class ArduinoSettings implements IArduinoSettings {
public get usingBundledArduinoCli() {
return this._usingBundledArduinoCli;
}

public get defaultBaudRate() {
return this._defaultBaudRate;
}

public get defaultTimestampFormat() {
return this._defaultTimestampFormat;
}

public get analyzeOnSettingChange(): boolean {
return VscodeSettings.getInstance().analyzeOnSettingChange;
}
Expand Down Expand Up @@ -278,23 +262,4 @@ export class ArduinoSettings implements IArduinoSettings {
this._arduinoPath = configValue;
}
}

private async tryGetDefaultBaudRate(): Promise<void> {
const supportBaudRates = [300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 74880, 115200, 230400, 250000];
const configValue = VscodeSettings.getInstance().defaultBaudRate;
if (!configValue || supportBaudRates.indexOf(configValue) === -1) {
this._defaultBaudRate = 0;
} else {
this._defaultBaudRate = configValue;
}
}

private async tryGetDefaultTimestampFormat(): Promise<void> {
const configValue = VscodeSettings.getInstance().defaultTimestampFormat;
if (!configValue) {
this._defaultTimestampFormat = "";
} else {
this._defaultTimestampFormat = configValue;
}
}
}
12 changes: 0 additions & 12 deletions src/arduino/vscodeSettings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,8 @@ const configKeys = {
DISABLE_TESTING_OPEN: "arduino.disableTestingOpen",
IGNORE_BOARDS: "arduino.ignoreBoards",
SKIP_HEADER_PROVIDER: "arduino.skipHeaderProvider",
DEFAULT_BAUD_RATE: "arduino.defaultBaudRate",
USE_ARDUINO_CLI: "arduino.useArduinoCli",
DISABLE_INTELLISENSE_AUTO_GEN: "arduino.disableIntelliSenseAutoGen",
DEFAULT_TIMESTAMP_FORMAT: "arduino.defaultTimestampFormat",
ANALYZE_ON_OPEN: "arduino.analyzeOnOpen",
ANALYZE_ON_SETTING_CHANGE: "arduino.analyzeOnSettingChange",
};
Expand All @@ -35,10 +33,8 @@ export interface IVscodeSettings {
disableTestingOpen: boolean;
ignoreBoards: string[];
skipHeaderProvider: boolean;
defaultBaudRate: number;
useArduinoCli: boolean;
disableIntelliSenseAutoGen: boolean;
defaultTimestampFormat: string;
analyzeOnOpen: boolean;
analyzeOnSettingChange: boolean;
updateAdditionalUrls(urls: string[]): void;
Expand Down Expand Up @@ -119,10 +115,6 @@ export class VscodeSettings implements IVscodeSettings {
this.setConfigValue(configKeys.IGNORE_BOARDS, value, true);
}

public get defaultBaudRate(): number {
return this.getConfigValue<number>(configKeys.DEFAULT_BAUD_RATE);
}

public get useArduinoCli(): boolean {
return this.getConfigValue<boolean>(configKeys.USE_ARDUINO_CLI);
}
Expand All @@ -139,10 +131,6 @@ export class VscodeSettings implements IVscodeSettings {
return this.getConfigValue<boolean>(configKeys.DISABLE_INTELLISENSE_AUTO_GEN);
}

public get defaultTimestampFormat(): string {
return this.getConfigValue<string>(configKeys.DEFAULT_TIMESTAMP_FORMAT);
}

public get analyzeOnOpen(): boolean {
return this.getConfigValue<boolean>(configKeys.ANALYZE_ON_OPEN);
}
Expand Down
1 change: 0 additions & 1 deletion src/common/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ export const messages = {
export const statusBarPriority = {
PORT: 20,
OPEN_PORT: 30,
BAUD_RATE: 40,
TIMESTAMP_FORMAT: 50,
BOARD: 60,
ENDING: 70,
Expand Down
18 changes: 8 additions & 10 deletions src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ export async function activate(context: vscode.ExtensionContext) {
}

if (!SerialMonitor.getInstance().initialized) {
SerialMonitor.getInstance().initialize();
SerialMonitor.getInstance().initialize(context);
}

const arduinoPath = arduinoContextModule.default.arduinoApp.settings.arduinoPath;
Expand Down Expand Up @@ -148,7 +148,7 @@ export async function activate(context: vscode.ExtensionContext) {
const registerNonArduinoCommand = (command: string, commandBody: (...args: any[]) => any, getUserData?: () => any): number => {
return context.subscriptions.push(vscode.commands.registerCommand(command, async (...args: any[]) => {
if (!SerialMonitor.getInstance().initialized) {
SerialMonitor.getInstance().initialize();
SerialMonitor.getInstance().initialize(context);
}
await commandExecution(command, commandBody, args, getUserData);
}));
Expand Down Expand Up @@ -323,12 +323,10 @@ export async function activate(context: vscode.ExtensionContext) {
// serial monitor commands
const serialMonitor = SerialMonitor.getInstance();
context.subscriptions.push(serialMonitor);
registerNonArduinoCommand("arduino.selectSerialPort", () => serialMonitor.selectSerialPort(null, null));
registerNonArduinoCommand("arduino.selectSerialPort", () => serialMonitor.selectSerialPort());
registerNonArduinoCommand("arduino.openSerialMonitor", () => serialMonitor.openSerialMonitor());
registerNonArduinoCommand("arduino.changeBaudRate", () => serialMonitor.changeBaudRate());
registerNonArduinoCommand("arduino.changeTimestampFormat", () => serialMonitor.changeTimestampFormat());
registerNonArduinoCommand("arduino.sendMessageToSerialPort", () => serialMonitor.sendMessageToSerialPort());
registerNonArduinoCommand("arduino.closeSerialMonitor", (port, showWarning = true) => serialMonitor.closeSerialMonitor(port, showWarning));
registerNonArduinoCommand("arduino.closeSerialMonitor", (port) => serialMonitor.closeSerialMonitor(port));

const completionProvider = new completionProviderModule.CompletionProvider();
context.subscriptions.push(vscode.languages.registerCompletionItemProvider(ARDUINO_MODE, completionProvider, "<", '"', "."));
Expand All @@ -344,7 +342,7 @@ export async function activate(context: vscode.ExtensionContext) {
}

if (!SerialMonitor.getInstance().initialized) {
SerialMonitor.getInstance().initialize();
SerialMonitor.getInstance().initialize(context);
}
vscode.commands.executeCommand("setContext", "vscode-arduino:showExampleExplorer", true);
})();
Expand All @@ -359,7 +357,7 @@ export async function activate(context: vscode.ExtensionContext) {
await arduinoActivatorModule.default.activate();
}
if (!SerialMonitor.getInstance().initialized) {
SerialMonitor.getInstance().initialize();
SerialMonitor.getInstance().initialize(context);
}
vscode.commands.executeCommand("setContext", "vscode-arduino:showExampleExplorer", true);
}
Expand Down Expand Up @@ -453,14 +451,14 @@ export async function activate(context: vscode.ExtensionContext) {

setTimeout(() => {
// delay to detect usb
usbDetectorModule.UsbDetector.getInstance().initialize(context.extensionPath);
usbDetectorModule.UsbDetector.getInstance().initialize(context);
usbDetectorModule.UsbDetector.getInstance().startListening();
}, 200);
}

export async function deactivate() {
const monitor = SerialMonitor.getInstance();
await monitor.closeSerialMonitor(null, false);
await monitor.closeSerialMonitor(null);
usbDetectorModule.UsbDetector.getInstance().stopListening();
Logger.traceUserData("deactivate-extension");
}
44 changes: 0 additions & 44 deletions src/serialmonitor/outputBuffer.ts

This file was deleted.

Loading