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

Commit 38133d0

Browse files
committed
Add option for printing timestamp before each line of Serial Monitor
1 parent 251f307 commit 38133d0

File tree

5 files changed

+43
-1
lines changed

5 files changed

+43
-1
lines changed

package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,11 @@
531531
"type": "boolean",
532532
"default": false,
533533
"description": "When disabled vscode-arduino will not auto-generate an IntelliSense configuration (i.e. c_cpp_properties.json) by analyzing the compiler output."
534+
},
535+
"arduino.timestampFormat": {
536+
"type": "string",
537+
"default": "",
538+
"description": "Format of timestamp added before each line. List of all possible formats: https://strftime.org"
534539
}
535540
}
536541
},

src/arduino/arduinoSettings.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export interface IArduinoSettings {
2222
defaultBaudRate: number;
2323
preferences: Map<string, string>;
2424
useArduinoCli: boolean;
25+
defaultTimestampFormat: string;
2526
reloadPreferences(): void;
2627
}
2728

@@ -40,6 +41,8 @@ export class ArduinoSettings implements IArduinoSettings {
4041

4142
private _useArduinoCli: boolean;
4243

44+
private _defaultTimestampFormat: string;
45+
4346
public constructor() {
4447
}
4548

@@ -49,6 +52,7 @@ export class ArduinoSettings implements IArduinoSettings {
4952
this._useArduinoCli = VscodeSettings.getInstance().useArduinoCli;
5053
await this.tryResolveArduinoPath();
5154
await this.tryGetDefaultBaudRate();
55+
await this.tryGetDefaultTimestampFormat();
5256
if (platform === "win32") {
5357
await this.updateWindowsPath();
5458
if (this._commandPath === "") {
@@ -161,6 +165,10 @@ export class ArduinoSettings implements IArduinoSettings {
161165
return this._defaultBaudRate;
162166
}
163167

168+
public get defaultTimestampFormat() {
169+
return this._defaultTimestampFormat;
170+
}
171+
164172
public reloadPreferences() {
165173
this._preferences = util.parseConfigFile(this.preferencePath);
166174
if (this.preferences.get("sketchbook.path")) {
@@ -234,4 +242,13 @@ export class ArduinoSettings implements IArduinoSettings {
234242
this._defaultBaudRate = configValue;
235243
}
236244
}
245+
246+
private async tryGetDefaultTimestampFormat(): Promise<void> {
247+
const configValue = VscodeSettings.getInstance().defaultTimestampFormat;
248+
if (!configValue) {
249+
this._defaultTimestampFormat = "";
250+
} else {
251+
this._defaultTimestampFormat = configValue;
252+
}
253+
}
237254
}

src/arduino/vscodeSettings.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ const configKeys = {
1919
DEFAULT_BAUD_RATE: "arduino.defaultBaudRate",
2020
USE_ARDUINO_CLI: "arduino.useArduinoCli",
2121
DISABLE_INTELLISENSE_AUTO_GEN: "arduino.disableIntelliSenseAutoGen",
22+
TIMESTAMP_FORMAT: "arduino.timestampFormat",
2223
};
2324

2425
export interface IVscodeSettings {
@@ -35,6 +36,7 @@ export interface IVscodeSettings {
3536
defaultBaudRate: number;
3637
useArduinoCli: boolean;
3738
disableIntelliSenseAutoGen: boolean;
39+
defaultTimestampFormat: string;
3840
updateAdditionalUrls(urls: string[]): void;
3941
}
4042

@@ -118,6 +120,10 @@ export class VscodeSettings implements IVscodeSettings {
118120
return this.getConfigValue<boolean>(configKeys.DISABLE_INTELLISENSE_AUTO_GEN);
119121
}
120122

123+
public get defaultTimestampFormat(): string {
124+
return this.getConfigValue<string>(configKeys.TIMESTAMP_FORMAT);
125+
}
126+
121127
public async updateAdditionalUrls(value) {
122128
await this.setConfigValue(configKeys.ADDITIONAL_URLS, value, true);
123129
}

src/serialmonitor/serialMonitor.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ export class SerialMonitor implements vscode.Disposable {
2323

2424
public static DEFAULT_BAUD_RATE: number = 115200;
2525

26+
public static DEFAULT_TIMESTAMP_FORMAT: string = "";
27+
2628
public static listBaudRates(): number[] {
2729
return [300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 74880, 115200, 230400, 250000, 500000, 1000000, 2000000];
2830
}
@@ -52,13 +54,21 @@ export class SerialMonitor implements vscode.Disposable {
5254

5355
private _bufferedOutputChannel: BufferedOutputChannel;
5456

57+
private _timestampFormat: string;
58+
5559
public initialize() {
5660
let defaultBaudRate;
5761
if (ArduinoContext.arduinoApp && ArduinoContext.arduinoApp.settings && ArduinoContext.arduinoApp.settings.defaultBaudRate) {
5862
defaultBaudRate = ArduinoContext.arduinoApp.settings.defaultBaudRate;
5963
} else {
6064
defaultBaudRate = SerialMonitor.DEFAULT_BAUD_RATE;
6165
}
66+
let defaultTimestampFormat;
67+
if (ArduinoContext.arduinoApp && ArduinoContext.arduinoApp.settings && ArduinoContext.arduinoApp.settings.defaultBaudRate) {
68+
defaultTimestampFormat = ArduinoContext.arduinoApp.settings.defaultTimestampFormat;
69+
} else {
70+
defaultTimestampFormat = SerialMonitor.DEFAULT_TIMESTAMP_FORMAT;
71+
}
6272
this._outputChannel = vscode.window.createOutputChannel(SerialMonitor.SERIAL_MONITOR);
6373
this._bufferedOutputChannel = new BufferedOutputChannel(this._outputChannel.append, 300);
6474
this._currentBaudRate = defaultBaudRate;
@@ -154,6 +164,7 @@ export class SerialMonitor implements vscode.Disposable {
154164
this._serialPortCtrl = new SerialPortCtrl(
155165
this._currentPort,
156166
this._currentBaudRate,
167+
this._timestampFormat,
157168
this._bufferedOutputChannel,
158169
this._outputChannel.show);
159170
}

src/serialmonitor/serialportctrl.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,17 @@ export class SerialPortCtrl {
6262
private _currentPort: string;
6363
private _currentBaudRate: number;
6464
private _currentSerialPort = null;
65+
private _timestampFormat: string;
6566

6667
public constructor(
6768
port: string,
6869
baudRate: number,
70+
timestampFormat: string,
6971
private _bufferedOutputChannel: BufferedOutputChannel,
7072
private showOutputChannel: (preserveFocus?: boolean) => void) {
7173
this._currentBaudRate = baudRate;
7274
this._currentPort = port;
75+
this._timestampFormat = timestampFormat;
7376
}
7477

7578
/*
@@ -93,7 +96,7 @@ export class SerialPortCtrl {
9396

9497
return new Promise((resolve, reject) => {
9598
this._child = spawn(SerialPortCtrl._serialCliPath,
96-
["open", this._currentPort, "-b", this._currentBaudRate.toString(), "--json"])
99+
["open", this._currentPort, "-b", this._currentBaudRate.toString(), "-t", this._timestampFormat, "--json"])
97100

98101
this._child.on("error", (err) => {
99102
reject(err)

0 commit comments

Comments
 (0)