Skip to content

Commit bb37e02

Browse files
committed
Allow adding variables from the CXXRTL sidebar
1 parent cd83374 commit bb37e02

File tree

6 files changed

+38
-3
lines changed

6 files changed

+38
-3
lines changed

package.json

+11
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,12 @@
175175
"command": "rtlDebugger.browseWaveforms",
176176
"category": "RTL Debugger",
177177
"title": "Browse Waveforms"
178+
},
179+
{
180+
"command": "rtlDebugger.addToWaveform",
181+
"category": "RTL Debugger",
182+
"title": "Add to Waveform",
183+
"icon": "$(keybindings-add)"
178184
}
179185
],
180186
"viewsContainers": {
@@ -319,6 +325,11 @@
319325
"command": "rtlDebugger.unWatchVariable",
320326
"when": "view == rtlDebugger.sidebar && viewItem =~ /inWatchList/",
321327
"group": "inline"
328+
},
329+
{
330+
"command": "rtlDebugger.addToWaveform",
331+
"when": "view == rtlDebugger.sidebar",
332+
"group": "inline"
322333
}
323334
],
324335
"rtlDebugger.setRadix": [

src/extension.ts

+10-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ import { WaveformProvider } from './ui/waveform';
1111

1212
export function activate(context: vscode.ExtensionContext) {
1313
const rtlDebugger = new CXXRTLDebugger();
14+
// TODO This is presumably not the right way to do it, but I'll do it like this for
15+
// now in order to test the WCP stuff
16+
var waveformProvider: WaveformProvider;
1417

1518
console.log('Attached');
1619

@@ -77,6 +80,11 @@ export function activate(context: vscode.ExtensionContext) {
7780
}
7881
}));
7982

83+
context.subscriptions.push(vscode.commands.registerCommand('rtlDebugger.addToWaveform', (treeItem) => {
84+
console.log("Adding to waveform", waveformProvider)
85+
waveformProvider.addVariable(treeItem.designation.variable.cxxrtlIdentifier)
86+
}));
87+
8088
context.subscriptions.push(vscode.commands.registerCommand('rtlDebugger.setRadix.2', (treeItem) =>
8189
globalVariableOptions.update(treeItem.designation.variable.cxxrtlIdentifier, { radix: 2 })));
8290
context.subscriptions.push(vscode.commands.registerCommand('rtlDebugger.setRadix.8', (treeItem) =>
@@ -104,7 +112,8 @@ export function activate(context: vscode.ExtensionContext) {
104112
retainContextWhenHidden: true,
105113
});
106114
const bundleRoot = vscode.Uri.joinPath(context.extensionUri, 'out/');
107-
context.subscriptions.push(new WaveformProvider(rtlDebugger, webviewPanel, bundleRoot));
115+
waveformProvider = new WaveformProvider(rtlDebugger, webviewPanel, bundleRoot)
116+
context.subscriptions.push(waveformProvider);
108117
}));
109118

110119
// For an unknown reason, the `vscode.open` command (which does the exact same thing) ignores the options.

src/model/variable.ts

+4
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ export abstract class Variable {
4444
get cxxrtlIdentifier(): string {
4545
return this.fullName.join(' ');
4646
}
47+
48+
get wcpIdentifier(): string {
49+
return this.fullName.join(".");
50+
}
4751
}
4852

4953
export class ScalarVariable extends Variable {

src/surfer/embed.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ document.addEventListener('DOMContentLoaded', async () => {
2525
if (message.type === 'cxxrtl_scmessage') {
2626
await libsurfer.on_cxxrtl_sc_message(message.message.inner);
2727
} else if (message.type === 'wcp_cs_message') {
28-
await libsurfer.send_wcp_sc_message(message.message);
28+
await libsurfer.handle_wcp_cs_message(message.message);
2929
} else {
3030
console.error('[RTL Debugger] [surferEmbed] Unhandled extension to webview message', message);
3131
}

src/ui/waveform.ts

+11
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { CXXRTLDebugger } from '../debugger';
55
import embedHtml from '../surfer/embed.html';
66
import { ILink, Packet } from '../cxxrtl/link';
77
import { ClientPacket } from '../cxxrtl/proto';
8+
import { Variable } from '../model/variable';
89

910
export class ClientPacketString {
1011
constructor(public inner: string) { }
@@ -85,5 +86,15 @@ export class WaveformProvider {
8586
}
8687
}
8788

89+
async addVariable(variable: Variable) {
90+
// TODO: How should we handle the callbacks here?
91+
const message = JSON.stringify({
92+
type: "command",
93+
command: "add_variables",
94+
names: [variable.wcpIdentifier]
95+
})
96+
this.sendMessage({type: 'wcp_cs_message', message})
97+
}
98+
8899
private debuggerLink: ILink;
89100
}

vendor/surfer

Submodule surfer updated from 1a6b34c to b07cb52

0 commit comments

Comments
 (0)