@@ -10,7 +10,7 @@ import * as vscode from "vscode";
10
10
import * as constants from "./common/constants" ;
11
11
const arduinoContentProviderModule =
12
12
impor ( "./arduino/arduinoContentProvider" ) as typeof import ( "./arduino/arduinoContentProvider" ) ;
13
- import { IBoard } from "./arduino/package" ;
13
+ import { IBoard , IProgrammer } from "./arduino/package" ;
14
14
import { VscodeSettings } from "./arduino/vscodeSettings" ;
15
15
const arduinoActivatorModule = impor ( "./arduinoActivator" ) as typeof import ( "./arduinoActivator" ) ;
16
16
const arduinoContextModule = impor ( "./arduinoContext" ) as typeof import ( "./arduinoContext" ) ;
@@ -26,6 +26,7 @@ const completionProviderModule = impor("./langService/completionProvider") as ty
26
26
import { BuildMode } from "./arduino/arduino" ;
27
27
import * as Logger from "./logger/logger" ;
28
28
import { SerialMonitor } from "./serialmonitor/serialMonitor" ;
29
+ import { ArduinoContentProvider } from "./arduino/arduinoContentProvider" ;
29
30
const usbDetectorModule = impor ( "./serialmonitor/usbDetector" ) as typeof import ( "./serialmonitor/usbDetector" ) ;
30
31
31
32
export async function activate ( context : vscode . ExtensionContext ) {
@@ -383,10 +384,17 @@ export async function activate(context: vscode.ExtensionContext) {
383
384
}
384
385
Logger . traceUserData ( "end-activate-extension" , { correlationId : activeGuid } ) ;
385
386
387
+ // Makes the provider available to the programmatic api
388
+ const provider : {
389
+ arduinoManagerProvider ?: ArduinoContentProvider ,
390
+ } = { } ;
391
+
386
392
setTimeout ( async ( ) => {
387
393
const arduinoManagerProvider = new arduinoContentProviderModule . ArduinoContentProvider ( context . extensionPath ) ;
388
394
await arduinoManagerProvider . initialize ( ) ;
389
395
396
+ provider . arduinoManagerProvider = arduinoManagerProvider ;
397
+
390
398
context . subscriptions . push ( vscode . workspace . registerTextDocumentContentProvider ( ARDUINO_MANAGER_PROTOCOL , arduinoManagerProvider ) ) ;
391
399
registerArduinoCommand ( "arduino.showBoardManager" , async ( ) => {
392
400
const panel = vscode . window . createWebviewPanel ( "arduinoBoardManager" , "Arduino Board Manager" , vscode . ViewColumn . Two , {
@@ -447,6 +455,45 @@ export async function activate(context: vscode.ExtensionContext) {
447
455
usbDetectorModule . UsbDetector . getInstance ( ) . initialize ( context ) ;
448
456
usbDetectorModule . UsbDetector . getInstance ( ) . startListening ( ) ;
449
457
} , 200 ) ;
458
+
459
+ return {
460
+ getCurrentBoard ( ) {
461
+ return arduinoContextModule . default . boardManager . currentBoard ;
462
+ } ,
463
+ getBoardTypes ( ) {
464
+ arduinoContextModule . default . boardManager . listBoards ( ) ;
465
+ } ,
466
+ changeBoardType ( board : IBoard ) {
467
+ arduinoContextModule . default . boardManager . doChangeBoardType ( board ) ;
468
+ provider . arduinoManagerProvider . update ( LIBRARY_MANAGER_URI ) ;
469
+ provider . arduinoManagerProvider . update ( EXAMPLES_URI ) ;
470
+ return { board : arduinoContextModule . default . boardManager . currentBoard } ;
471
+ } ,
472
+ installBoard : async ( packageName : string , arch : string = "" , version : string = "" , showOutput : boolean = true ) => {
473
+ await arduinoContextModule . default . arduinoApp . installBoard ( packageName , arch , version , showOutput )
474
+ } ,
475
+ getCurrentProgrammer ( ) {
476
+ return DeviceContext . getInstance ( ) . programmer ;
477
+ } ,
478
+ getAvailableProgrammers ( board : IBoard ) {
479
+ return arduinoContextModule . default . arduinoApp . programmerManager . getAvailableProgrammers ( board )
480
+ } ,
481
+ selectProgrammer ( programmer : IProgrammer ) {
482
+ if ( ! arduinoContextModule . default . arduinoApp . building ) {
483
+ try {
484
+ arduinoContextModule . default . arduinoApp . programmerManager . setProgrammerValue ( programmer . name ) ;
485
+ DeviceContext . getInstance ( ) . programmer = arduinoContextModule . default . arduinoApp . programmerManager . currentProgrammer ;
486
+ return true ;
487
+ } catch ( ex ) {
488
+ return false ;
489
+ }
490
+ }
491
+ } ,
492
+ selectSketch ( relativeSketchPath : string ) {
493
+ deviceContext . sketch = relativeSketchPath ;
494
+ deviceContext . showStatusBar ( ) ;
495
+ } ,
496
+ }
450
497
}
451
498
452
499
export async function deactivate ( ) {
0 commit comments