1
- import { inject , injectable } from '@theia/core/shared/inversify' ;
1
+ import { nls } from '@theia/core/lib/common' ;
2
+ import { injectable } from '@theia/core/shared/inversify' ;
3
+ import { CoreService } from '../../common/protocol' ;
2
4
import { ArduinoMenus } from '../menu/arduino-menus' ;
3
- import { BoardsDataStore } from '../boards/boards-data-store' ;
4
- import { BoardsServiceProvider } from '../boards/boards-service-provider' ;
5
5
import {
6
- CoreServiceContribution ,
7
6
Command ,
8
7
CommandRegistry ,
8
+ CoreServiceContribution ,
9
9
MenuModelRegistry ,
10
10
} from './contribution' ;
11
- import { nls } from '@theia/core/lib/common' ;
12
11
13
12
@injectable ( )
14
13
export class BurnBootloader extends CoreServiceContribution {
15
- @inject ( BoardsDataStore )
16
- protected readonly boardsDataStore : BoardsDataStore ;
17
-
18
- @inject ( BoardsServiceProvider )
19
- protected readonly boardsServiceClientImpl : BoardsServiceProvider ;
20
-
21
14
override registerCommands ( registry : CommandRegistry ) : void {
22
15
registry . registerCommand ( BurnBootloader . Commands . BURN_BOOTLOADER , {
23
16
execute : ( ) => this . burnBootloader ( ) ,
@@ -35,32 +28,19 @@ export class BurnBootloader extends CoreServiceContribution {
35
28
} ) ;
36
29
}
37
30
38
- async burnBootloader ( ) : Promise < void > {
31
+ private async burnBootloader ( ) : Promise < void > {
32
+ const options = await this . options ( ) ;
39
33
try {
40
- const { boardsConfig } = this . boardsServiceClientImpl ;
41
- const port = boardsConfig . selectedPort ;
42
- const [ fqbn , { selectedProgrammer : programmer } , verify , verbose ] =
43
- await Promise . all ( [
44
- this . boardsDataStore . appendConfigToFqbn (
45
- boardsConfig . selectedBoard ?. fqbn
46
- ) ,
47
- this . boardsDataStore . getData ( boardsConfig . selectedBoard ?. fqbn ) ,
48
- this . preferences . get ( 'arduino.upload.verify' ) ,
49
- this . preferences . get ( 'arduino.upload.verbose' ) ,
50
- ] ) ;
51
-
52
- const board = {
53
- ...boardsConfig . selectedBoard ,
54
- name : boardsConfig . selectedBoard ?. name || '' ,
55
- fqbn,
56
- } ;
57
- this . outputChannelManager . getChannel ( 'Arduino' ) . clear ( ) ;
58
- await this . coreService . burnBootloader ( {
59
- board,
60
- programmer,
61
- port,
62
- verify,
63
- verbose,
34
+ await this . doWithProgress ( {
35
+ progressText : nls . localize (
36
+ 'arduino/bootloader/burningBootloader' ,
37
+ 'Burning bootloader...'
38
+ ) ,
39
+ task : ( progressId , coreService ) =>
40
+ coreService . burnBootloader ( {
41
+ ...options ,
42
+ progressId,
43
+ } ) ,
64
44
} ) ;
65
45
this . messageService . info (
66
46
nls . localize (
@@ -75,6 +55,27 @@ export class BurnBootloader extends CoreServiceContribution {
75
55
this . handleError ( e ) ;
76
56
}
77
57
}
58
+
59
+ private async options ( ) : Promise < CoreService . Options . Bootloader > {
60
+ const { boardsConfig } = this . boardsServiceProvider ;
61
+ const port = boardsConfig . selectedPort ;
62
+ const [ fqbn , { selectedProgrammer : programmer } , verify , verbose ] =
63
+ await Promise . all ( [
64
+ this . boardsDataStore . appendConfigToFqbn (
65
+ boardsConfig . selectedBoard ?. fqbn
66
+ ) ,
67
+ this . boardsDataStore . getData ( boardsConfig . selectedBoard ?. fqbn ) ,
68
+ this . preferences . get ( 'arduino.upload.verify' ) ,
69
+ this . preferences . get ( 'arduino.upload.verbose' ) ,
70
+ ] ) ;
71
+ return {
72
+ fqbn,
73
+ programmer,
74
+ port,
75
+ verify,
76
+ verbose,
77
+ } ;
78
+ }
78
79
}
79
80
80
81
export namespace BurnBootloader {
0 commit comments