@@ -24,14 +24,13 @@ class MainRouter {
24
24
25
25
constructor ( mainWindow , entryServer ) {
26
26
global . $ = require ( 'lodash' ) ;
27
- rendererConsole . initialize ( mainWindow ) ;
28
27
this . browser = mainWindow ;
28
+ rendererConsole . initialize ( mainWindow ) ;
29
29
this . scanner = new Scanner ( this ) ;
30
30
this . server = entryServer ;
31
31
this . flasher = new Flasher ( ) ;
32
- this . hardwareListManager = new HardwareListManager ( this ) ;
32
+ this . hardwareListManager = new HardwareListManager ( ) ;
33
33
34
- this . selectedPort = undefined ;
35
34
this . config = undefined ;
36
35
/** @type {Connector } */
37
36
this . connector = undefined ;
@@ -49,12 +48,10 @@ class MainRouter {
49
48
try {
50
49
await this . startScan ( config ) ;
51
50
} catch ( e ) {
52
- rendererConsole . error ( 'startScan err : ' , e ) ;
51
+ console . error ( e ) ;
52
+ rendererConsole . error ( `startScan err : ` , e ) ;
53
53
}
54
54
} ) ;
55
- ipcMain . on ( 'selectPort' , ( e , portName ) => {
56
- this . selectedPort = portName ;
57
- } ) ;
58
55
ipcMain . on ( 'stopScan' , ( ) => {
59
56
this . close ( ) ;
60
57
} ) ;
@@ -63,23 +60,15 @@ class MainRouter {
63
60
} ) ;
64
61
ipcMain . on ( 'requestFlash' , ( e , firmwareName ) => {
65
62
this . flashFirmware ( firmwareName )
66
- . then ( ( firmware ) => {
63
+ . then ( ( ) => {
67
64
if ( ! e . sender . isDestroyed ( ) ) {
68
65
e . sender . send ( 'requestFlash' ) ;
69
66
}
70
- return firmware ;
71
67
} )
72
68
. catch ( ( err ) => {
73
69
if ( ! e . sender . isDestroyed ( ) ) {
74
70
e . sender . send ( 'requestFlash' , err ) ;
75
71
}
76
- } )
77
- . then ( async ( firmware ) => {
78
- this . flasher . kill ( ) ;
79
- if ( firmware && firmware . afterDelay ) {
80
- await new Promise ( ( resolve ) => setTimeout ( resolve , firmware . afterDelay ) ) ;
81
- }
82
- await this . startScan ( this . config ) ;
83
72
} ) ;
84
73
} ) ;
85
74
ipcMain . on ( 'executeDriver' , ( e , driverPath ) => {
@@ -106,10 +95,9 @@ class MainRouter {
106
95
*/
107
96
flashFirmware ( firmwareName ) {
108
97
if ( this . connector && this . connector . serialPort && this . config ) {
109
- this . sendState ( 'flash' ) ;
110
98
let firmware = firmwareName ;
111
99
const {
112
- firmware : firmwareInConfig ,
100
+ configfirmware ,
113
101
firmwareBaudRate : baudRate ,
114
102
firmwareMCUType : MCUType ,
115
103
tryFlasherNumber : maxFlashTryCount = 10 ,
@@ -118,12 +106,10 @@ class MainRouter {
118
106
this . firmwareTryCount = 0 ;
119
107
120
108
if ( firmwareName === undefined || firmwareName === '' ) {
121
- console . warn ( 'firmware requested without firmware info!' ) ;
122
- console . warn ( 'try to default firmware info in config file' ) ;
123
- firmware = firmwareInConfig ;
109
+ firmware = configfirmware ;
124
110
}
125
111
126
- this . close ( { saveSelectedPort : true } ) ; // 서버 통신 중지, 시리얼포트 연결 해제
112
+ this . close ( ) ; // 서버 통신 중지, 시리얼포트 연결 해제
127
113
128
114
const flashFunction = ( ) => new Promise ( ( resolve , reject ) => {
129
115
setTimeout ( ( ) => {
@@ -143,15 +129,30 @@ class MainRouter {
143
129
reject ( new Error ( 'Failed Firmware Upload' ) ) ;
144
130
}
145
131
} else {
146
- resolve ( firmware ) ;
132
+ resolve ( ) ;
147
133
}
148
134
} )
149
135
. catch ( reject ) ;
150
136
} , 500 ) ;
151
137
} ) ;
152
138
153
139
// 에러가 발생하거나, 정상종료가 되어도 일단 startScan 을 재시작한다.
154
- return flashFunction ( ) ;
140
+ return flashFunction ( )
141
+ . then ( ( ) => {
142
+ console . log ( 'flash successed' ) ;
143
+ } )
144
+ . catch ( ( e ) => {
145
+ rendererConsole . error ( 'flash failed' , e ) ;
146
+ console . log ( 'flash failed' ) ;
147
+ throw e ;
148
+ } )
149
+ . finally ( async ( ) => {
150
+ this . flasher . kill ( ) ;
151
+ if ( firmware . afterDelay ) {
152
+ await new Promise ( ( resolve ) => setTimeout ( resolve , firmware . afterDelay ) ) ;
153
+ }
154
+ await this . startScan ( this . config ) ;
155
+ } ) ;
155
156
} else {
156
157
return Promise . reject ( new Error ( 'Hardware Device Is Not Connected' ) ) ;
157
158
}
@@ -184,23 +185,23 @@ class MainRouter {
184
185
}
185
186
}
186
187
187
- this . sendEventToMainWindow ( 'state' , resultState , ...args ) ;
188
+ if ( ! this . browser . isDestroyed ( ) ) {
189
+ this . browser . webContents . send ( 'state' , resultState , ...args ) ;
190
+ }
188
191
}
189
192
190
193
notifyCloudModeChanged ( mode ) {
191
- this . sendEventToMainWindow ( 'cloudMode' , mode ) ;
194
+ if ( ! this . browser . isDestroyed ( ) ) {
195
+ this . browser . webContents . send ( 'cloudMode' , mode ) ;
196
+ }
192
197
this . currentCloudMode = mode ;
193
198
}
194
199
195
200
notifyServerRunningModeChanged ( mode ) {
196
- this . sendEventToMainWindow ( 'serverMode' , mode ) ;
197
- this . currentServerRunningMode = mode ;
198
- }
199
-
200
- sendEventToMainWindow ( eventName , ...args ) {
201
201
if ( ! this . browser . isDestroyed ( ) ) {
202
- this . browser . webContents . send ( eventName , ... args ) ;
202
+ this . browser . webContents . send ( 'serverMode' , mode ) ;
203
203
}
204
+ this . currentServerRunningMode = mode ;
204
205
}
205
206
206
207
/**
@@ -222,29 +223,21 @@ class MainRouter {
222
223
this . config = config ;
223
224
if ( this . scanner ) {
224
225
this . hwModule = require ( `../../modules/${ config . module } ` ) ;
225
- this . sendState ( 'scan' ) ;
226
- this . scanner . stopScan ( ) ;
227
- const connector = await this . scanner . startScan ( this . hwModule , this . config ) ;
228
- if ( connector ) {
229
- this . sendState ( 'connected' ) ;
230
- this . connector = connector ;
231
- connector . setRouter ( this ) ;
232
- this . _connect ( connector ) ;
233
- /*if (this.scanner.isScanning) {
234
- this.scanner.config = config;
235
- return;
226
+ if ( this . scanner . isScanning ) {
227
+ this . scanner . config = config ;
228
+ return ;
229
+ }
230
+
231
+ if ( this . scanner . isScanning ) {
232
+ this . scanner . setConfig ( config ) ;
233
+ } else {
234
+ const connector = await this . scanner . startScan ( this . hwModule , this . config ) ;
235
+ if ( connector ) {
236
+ this . sendState ( 'connected' ) ;
237
+ this . connector = connector ;
238
+ connector . setRouter ( this ) ;
239
+ this . _connect ( connector ) ;
236
240
}
237
-
238
- if (this.scanner.isScanning) {
239
- this.scanner.setConfig(config);
240
- } else {
241
- const connector = await this.scanner.startScan(this.hwModule, this.config);
242
- if (connector) {
243
- this.sendState('connected');
244
- this.connector = connector;
245
- connector.setRouter(this);
246
- this._connect(connector);
247
- }*/
248
241
}
249
242
}
250
243
}
@@ -366,34 +359,24 @@ class MainRouter {
366
359
}
367
360
}
368
361
369
- /**
370
- *
371
- * @param option {Object=} true 인 경우, 포트선택했던 내역을 지우지 않는다.
372
- */
373
- close ( option ) {
374
- const { saveSelectedPort = false } = option || { } ;
375
-
362
+ close ( ) {
376
363
if ( this . server ) {
377
364
this . server . disconnectHardware ( ) ;
378
365
}
379
366
if ( this . connector ) {
367
+ rendererConsole . log ( 'disconnect' ) ;
380
368
if ( this . hwModule . disconnect ) {
381
369
this . hwModule . disconnect ( this . connector ) ;
382
370
} else {
383
371
this . connector . close ( ) ;
384
372
}
385
- this . sendState ( 'disconnected' ) ;
386
373
}
387
374
if ( this . scanner ) {
388
375
this . scanner . stopScan ( ) ;
389
376
}
390
377
if ( this . handler ) {
391
378
this . handler = undefined ;
392
379
}
393
-
394
- if ( ! saveSelectedPort ) {
395
- this . selectedPort = undefined ;
396
- }
397
380
} ;
398
381
399
382
/**
0 commit comments